[問題] Define complex multiply

看板C_and_CPP作者 (石斛蘭)時間16年前 (2009/11/09 22:53), 編輯推噓9(907)
留言16則, 9人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 大家好,我想問一題考古題 題目是 中正資工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

11/09 22:58, , 1F
如果A和B都不能被改, return回去指標也只能malloc吧@_@"
11/09 22:58, 1F

11/09 23:00, , 2F
全域變數 (誤)
11/09 23:00, 2F

11/09 23:04, , 3F
中正的考題常這樣的 ... 我自己去年也覺得怪怪的
11/09 23:04, 3F

11/09 23:15, , 4F
malloc 並沒有不好, 只是需要成對的 func, 命名也要有意義
11/09 23:15, 4F

11/09 23:15, , 5F
比如說 Multiply_Alloc() 之類的
11/09 23:15, 5F

11/09 23:52, , 6F
回傳malloc的東西 重複call function會memory leak
11/09 23:52, 6F

11/09 23:53, , 7F
multiply(multiply(A,B),C) 就有記憶體收不掉啦XD
11/09 23:53, 7F

11/10 00:06, , 8F
A = multiply(A, B); 就有機會死翹翹啦XD
11/10 00:06, 8F

11/10 00:17, , 9F
如果都指明是 _Alloc 還這樣用, 那也死得其所了 XD
11/10 00:17, 9F

11/10 00:45, , 10F
multiply_dont_fucking_forget_release_mem_by_yourself()
11/10 00:45, 10F

11/10 01:54, , 11F
樓上的命名原則 比較適合在業界...
11/10 01:54, 11F

11/10 02:08, , 12F
好強大
11/10 02:08, 12F

11/10 02:10, , 13F
我在公司寫code為了怕衝 會用兩個long數字組成UUID掛在後
11/10 02:10, 13F

11/10 12:38, , 14F
回傳malloc出的記憶體 有什麼不好的?
11/10 12:38, 14F

11/10 12:45, , 15F
不好在這個func沒妥善使用的話很容易mem leak, 因為這樣
11/10 12:45, 15F

11/10 12:45, , 16F
的設計很難做到成對的code style....@_@"
11/10 12:45, 16F
文章代碼(AID): #1A-2pW4k (C_and_CPP)
文章代碼(AID): #1A-2pW4k (C_and_CPP)