作者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
1F:推 VictorTom:如果A和B都不能被改, return回去指标也只能malloc吧@_@" 11/09 22:58
2F:→ james732:全域变数 (误) 11/09 23:00
3F:推 legnaleurc:中正的考题常这样的 ... 我自己去年也觉得怪怪的 11/09 23:04
4F:推 ledia:malloc 并没有不好, 只是需要成对的 func, 命名也要有意义 11/09 23:15
5F:→ ledia:比如说 Multiply_Alloc() 之类的 11/09 23:15
6F:推 holymars:回传malloc的东西 重复call function会memory leak 11/09 23:52
7F:→ holymars:multiply(multiply(A,B),C) 就有记忆体收不掉啦XD 11/09 23:53
8F:推 VictorTom:A = multiply(A, B); 就有机会死翘翘啦XD 11/10 00:06
9F:推 ledia:如果都指明是 _Alloc 还这样用, 那也死得其所了 XD 11/10 00:17
10F:推 yoco315:multiply_dont_fucking_forget_release_mem_by_yourself() 11/10 00:45
11F:→ softwind:楼上的命名原则 比较适合在业界... 11/10 01:54
12F:推 twotwoone:好强大 11/10 02:08
13F:→ softwind:我在公司写code为了怕冲 会用两个long数字组成UUID挂在後 11/10 02:10
14F:→ netsphere:回传malloc出的记忆体 有什麽不好的? 11/10 12:38
15F:推 VictorTom:不好在这个func没妥善使用的话很容易mem leak, 因为这样 11/10 12:45
16F:→ VictorTom:的设计很难做到成对的code style....@_@" 11/10 12:45