Re: [問題] 問一題面試可能會考的考題
函數的 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)
討論串 (同標題文章)