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

看板C_and_CPP (C/C++)作者 (常磊)時間16年前 (2010/01/17 23:29), 編輯推噓3(307)
留言10則, 5人參與, 最新討論串5/6 (看更多)
※ 引述《clanguage (C語言)》之銘言: : 函數的 paremeter 就是區域變數, 是函數一執行幫你配置的 : 區域變數就是離開 function 會被釋放, 無法取值 : 這是因為它會幫你拷貝一份 argument 到 parameter : 成為新的變數, 不管裡面放的是位址(指標)或是值 : 所以你要傳指標進去, 出來還要拿到同一個指標 : 就要用指標的指標.. 多包了一層 : 抽象上的意義就不太一樣.. char* getMem() { char * getmem; getmem = (char*)malloc(100); return getmem; } main() { char *str ; str = getMem(); strcpy(str, "Hello C/C++ programming"); printf("%s\n", str); getchar(); } 那這樣可以的原因是...? -- 少年よ、大志をいだけよ からっぼの夜には 心に炎を 抱いて眠れ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.54.161

01/17 23:35, , 1F
不可以的原因是...?
01/17 23:35, 1F

01/17 23:37, , 2F
是因為getmem對於main來說是無效的,但是由於回傳了addr
01/17 23:37, 2F

01/17 23:37, , 3F
所以可以繼續用是嗎?
01/17 23:37, 3F

01/18 00:21, , 4F
可以繼續用好像有點怪怪的,應該說把getmem的value assign給
01/18 00:21, 4F

01/18 00:22, , 5F
str了,而getmem是指到malloc的那個位置,理所當然str也是指
01/18 00:22, 5F

01/18 00:23, , 6F
到一樣的位置。位置從頭到尾沒有free,還是一樣在那裡
01/18 00:23, 6F

01/18 00:53, , 7F
把getmem去掉, 寫成 return (char*)malloc(100); 有啥差
01/18 00:53, 7F

01/18 00:54, , 8F
別?? 想一想看看:) 這跟不能的那個寫法其實沒什麼關係XD
01/18 00:54, 8F

01/18 08:52, , 9F
heap的關係
01/18 08:52, 9F

01/18 15:12, , 10F
感謝樓上V大,這樣想我就了解了XD
01/18 15:12, 10F
文章代碼(AID): #1BKoo-xW (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BKoo-xW (C_and_CPP)