Re: [問題] 問一題面試可能會考的考題

看板C_and_CPP作者 (C語言)時間15年前 (2010/01/14 16:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/6 (看更多)
函數的 paremeter 就是區域變數, 是函數一執行幫你配置的 區域變數就是離開 function 會被釋放, 無法取值 這是因為它會幫你拷貝一份 argument 到 parameter 成為新的變數, 不管裡面放的是位址(指標)或是值 所以你要傳指標進去, 出來還要拿到同一個指標 就要用指標的指標.. 多包了一層 抽象上的意義就不太一樣.. ※ 引述《ThirdEmpire (我操你姐的國家暴力)》之銘言: : 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: 61.229.228.126 ※ 編輯: clanguage 來自: 61.229.228.126 (01/15 00:37)
文章代碼(AID): #1BJqWNsR (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BJqWNsR (C_and_CPP)