[問題] 回傳指標問題

看板C_and_CPP (C/C++)作者 (JACK)時間16年前 (2010/04/30 00:37), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
請問一下 有一個函數 char * test(void) { char tmp[8]="abc"; char *ptr; long ret=666; ... 1. return (char*) &tmp; or 2. return (char*) ptr; 3. return (char*) &ret; } 1.tmp本身是陣列 所以 放tmp就好 為什麼要放&tmp?? 2.因為要回傳指標 所以這邊放指標位置 ? 3.我要得到ret=666 所以這邊要加一個& 符號就對了 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.173.217

04/30 00:39, , 1F
語法上寫 return tmp; 就好... 不過會踩到十戒之六
04/30 00:39, 1F

04/30 00:42, , 2F
先說結論:你的 1 跟 3 有可能正常運作 也可能莫名錯誤
04/30 00:42, 2F

04/30 00:58, , 3F
1, 3應該是會compile過,但執行若存取值,會發生記憶錯誤。
04/30 00:58, 3F

04/30 00:58, , 4F
記憶體
04/30 00:58, 4F
文章代碼(AID): #1BsRNI6n (C_and_CPP)
文章代碼(AID): #1BsRNI6n (C_and_CPP)