[爆卦]C 指標 面試考題是什麼?優點缺點精華區懶人包

為什麼這篇C 指標 面試考題鄉民發文收入到精華區:因為在C 指標 面試考題這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ThirdEmpire (我操你姐的國家暴力)看板C_and_CPP標題[問題] 問一題面試可能...


void getMem(char *ptr)
{
ptr = (char*)malloc(100);
}
main()
{
char *str = NULL;
getMem(str);
strcpy(str, "Hello C/C++ programming");
printf("%s\n", str);
}

直接說結果好了
為什麼這樣會當機?

不是已經 call by pointer 了嗎
ptr 應該會得到新 malloc 的那堆空間

==================================

然後比較一下下面這題

void getMem(char **ptr, int num)
{
*ptr = (char*)malloc(200);
}
main()
{
char *str = NULL;
getMem(&str, 200);
strcpy(str, "Hello C/C++ programming");
printf("%s\n", str);
}

為什麼這樣就可以順利印出
Hello blah blah 那串?





--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.48.229
※ 編輯: ThirdEmpire 來自: 114.25.48.229 (01/14 21:49)
VictorTom:是啊, ptr是拿到新空間啦, 但是沒有成功留給main裡的 01/14 21:57
VictorTom:str啊; 請去查一下pass by value與pass by reference. 01/14 21:57
ThirdEmpire:可是他是 call by pointer 所以應該有留給main 不是嗎 01/14 21:59
VictorTom:掛debug看看str與ptr的address/變化如何:) 01/14 22:01
VictorTom:話說, call by pointer又是哪裡出來的名詞啊....@_@" 01/14 22:02
ledia:沒有 call by pointer 這種東西, 都是 call by value 01/14 22:02
ledia:竟然跟樓上同時 >/////< 01/14 22:03
VictorTom:XD 我也是覺得call by address已經夠亂了, 現在又出來一 01/14 22:04
VictorTom:種說法叫cal by pointer, 真是....(暈)....orz 01/14 22:04
ThirdEmpire:我說的 call by pointer 就是 call by address 啦 sry 01/14 22:06
fragileness:你先舉出一個利用你所謂的call by address,然後確定 01/14 22:09
fragileness:可正常執行的例子之後再說 01/14 22:09
ThirdEmpire:OK 我好像懂了 關鍵就在 call by address 01/14 22:13
ThirdEmpire:骨子裡還是 call by value 只是 data type 是 address 01/14 22:13
chchwy:拜託 call by address/pointer 都是以訛傳訛的錯誤名詞 01/14 23:06
chchwy:只有call by value / reference兩種而已 01/14 23:06
adxis:我怎麼好像在PL課本上面看到 call by address -.- 01/14 23:31
sunneo:call by lanpa 01/14 23:39
mine1988:我大學老師也是教call by address 01/14 23:51
loveme00835:可以問一下這是啥場合的面試嗎? 01/14 23:53
conan77420:這是call by value吧 01/15 00:07
conan77420:by address 跟by reference好像是刻意劃分C跟C++ 01/15 00:09
yayarice:雖然型態是pointer, 但這是call by value 01/15 01:35
hilorrk:而且還會造成記憶體遺失...XD 01/15 01:40
softwind:C只有call by value 只要記對的就好 其他都是錯的 01/15 02:11
csihcs:#16r2cr6m 01/15 03:50
ledia:應該是求職面試.... 我好像也有遇過一樣的問題 (小聲) 01/15 09:26
final01:沒有什麼錯不錯的問題吧 01/15 09:50
final01:講法上的問題 01/15 09:50
mantour:喜歡用call by pointer講也可以呀 01/15 10:41
stonehomelaa:台灣人自創的講法 老外聽不懂滴 01/15 10:41
mantour:你在函式內要改變的是pointer本身的值,而不是point所指 01/15 10:42
mantour:向的變數的值,就要傳指向這個pointer的pointer進去 01/15 10:42
mantour:嗯嗯 純粹只是說原PO會有這個問題並非名詞上的錯誤 01/15 10:43
mantour:而是對pointer的了解有問題 01/15 10:44
mantour:我個人是覺得一律用call by value來理解比較簡單 01/15 10:44
mantour:至於call by address是否為台灣人自創我不清楚 01/15 10:45
stonehomelaa:聖經本都說C只有call by value了 01/15 10:45
stonehomelaa:台灣人寫的書自創用語 反而造成學生多餘負擔 01/15 10:46
remmurds:只能推樓上了 01/15 10:55

你可能也想看看

搜尋相關網站