[問題] 關於引用副程式與memory的問題

看板C_and_CPP作者 (5566Is)時間12年前 (2013/06/25 19:22), 編輯推噓4(4012)
留言16則, 10人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 問題(Question): 最近遇到一些C++面試時的問題,但自己仍找不出問題的地方 想請教前輩們下面問題的解答,謝謝 1.下面的程式,紅色是自己覺得有問題修改的地方,但不知道是否還有錯誤? #define PI 3.14 doule AREA_CAL_IRQHANDLER(double radius) { double area = PI*radius*radius; printf(“\nArea=%f”, area); return area; (此行應該改return 0;) } 2.想請問下面function在做什麼動作跟如果有問題的話會發生在哪? int main () { int i,n; char * buffer; printf ("How long do you want the string? "); scanf ("%d", &i); buffer = (char*) malloc (i+1); if (buffer==NULL) exit (1); (如果在這exit,上面叫的memory不會被free?) if(i>1000) return 1; for (n=0; n<i; n++) buffer[n]=rand()%26+'a'; buffer[i]='\0'; printf ("Random string: %s\n",buffer); free (buffer); return 0; } 3.想請問該行會在哪裡出問題? struct S { int i; int *p; }; main() (少加上int main()?) { S s; int *p = &s.i; p[0] = 4; p[1] = 3; s.p = p; (這裡指的p值似乎有問題?) s.p[1] = 1; s.p[0] = 2; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.229.167.207

06/25 19:33, , 1F
第一題return 0;......傳回的面積都是0是想幹啥@@"
06/25 19:33, 1F

06/25 19:34, , 2F
第3題不用改int main()應該沒差,只是VC++可能會錯...
06/25 19:34, 2F

06/25 19:35, , 3F
s.p = p; 兩邊的型態都是int*,大概沒問題吧。
06/25 19:35, 3F

06/25 19:46, , 4F
#define 切勿加分號 除非你真的知道你在寫什麼 XD
06/25 19:46, 4F

06/25 19:47, , 5F
define那邊手誤 等等修改...
06/25 19:47, 5F
※ 編輯: Is5566 來自: 36.229.167.207 (06/25 20:03)

06/25 20:13, , 6F
第2題的if(i>1000) return 1;會memory leak
06/25 20:13, 6F

06/25 20:15, , 7F
第3題的 p[1] 就有問題了
06/25 20:15, 7F

06/25 20:17, , 8F
恩,執行到p[1]=3;應該會掛掉
06/25 20:17, 8F

06/25 20:29, , 9F
為什麼會有算面積的irq handler呢 O口O
06/25 20:29, 9F

06/25 20:52, , 10F
可能只是他從小就想當IRQ handler而已 XD
06/25 20:52, 10F

06/25 23:55, , 11F
只有我覺得s.p[0]=2才會當嗎XD
06/25 23:55, 11F

06/26 01:03, , 12F
#define PI (acos(-1.0)) 記得 include math.h or cmath
06/26 01:03, 12F

06/26 01:47, , 13F
第一題明明是手誤..
06/26 01:47, 13F

06/26 01:48, , 14F
"doule" AREA_CAL_IRQHANDLER(double radius)
06/26 01:48, 14F

06/26 05:12, , 15F
回hilorrk,根據題意,我覺得應該先找最先出問題的地方。
06/26 05:12, 15F

06/26 17:32, , 16F
?c++面試題跟副程式在哪?
06/26 17:32, 16F
文章代碼(AID): #1HoNs6JW (C_and_CPP)
文章代碼(AID): #1HoNs6JW (C_and_CPP)