看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 大家好,我想問一題考古題 題目是 中正資工95年 程式設計 第17題 題目為 Define a C structure type Complex that represents complex numbers and a C function multiply that performs the multiplication of complex numbers. The prototype of the multiply is as follows: Complex *multiply(Complex*, Complex*) 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 純C 有問題的地方: (請善用置底文標色功能) 我的在於題目的prototype已經定好了 所以multiply必須回傳一個Complex* 可是回傳一個malloc出來的位置又是不好的習慣 回傳static 的位置又會有重複call這個function的問題 ( 像是 multiply(multiply(A,B),C) 這種 ) 想請問一下有沒有好的寫法可以回傳一個Complex空間又沒有以上的問題 補充說明: 我的code typedef struct complex{ int real,imag; }Complex; Complex *multiply( Complex *A, Complex *B) { Complex *C = ??? //<= 問題點 C->Real = .... C->Imag = .... return C; } 抱歉我的pcmanx對於複製有控制碼東西會怪怪的 所以就不上色了 -- http://www.plurk.com/dendrobium/invite 碎嘴...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.198.35.85
VictorTom:如果A和B都不能被改, return回去指標也只能malloc吧@_@" 11/09 22:58
james732:全域變數 (誤) 11/09 23:00
legnaleurc:中正的考題常這樣的 ... 我自己去年也覺得怪怪的 11/09 23:04
ledia:malloc 並沒有不好, 只是需要成對的 func, 命名也要有意義 11/09 23:15
ledia:比如說 Multiply_Alloc() 之類的 11/09 23:15
holymars:回傳malloc的東西 重複call function會memory leak 11/09 23:52
holymars:multiply(multiply(A,B),C) 就有記憶體收不掉啦XD 11/09 23:53
VictorTom:A = multiply(A, B); 就有機會死翹翹啦XD 11/10 00:06
ledia:如果都指明是 _Alloc 還這樣用, 那也死得其所了 XD 11/10 00:17
yoco315:multiply_dont_fucking_forget_release_mem_by_yourself() 11/10 00:45
softwind:樓上的命名原則 比較適合在業界... 11/10 01:54
twotwoone:好強大 11/10 02:08
softwind:我在公司寫code為了怕衝 會用兩個long數字組成UUID掛在後 11/10 02:10
netsphere:回傳malloc出的記憶體 有什麼不好的? 11/10 12:38
VictorTom:不好在這個func沒妥善使用的話很容易mem leak, 因為這樣 11/10 12:45
VictorTom:的設計很難做到成對的code style....@_@" 11/10 12:45