作者dendrobium (石斛蘭)
看板C_and_CPP
標題[問題] Define complex multiply
時間Mon Nov 9 22:53:13 2009
遇到的問題: (題意請描述清楚)
大家好,我想問一題考古題
題目是 中正資工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