[問題] 字串函數回傳問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dec C++
問題(Question):
為什麼回傳回來後print出的字串 會怪怪的。
預期的正確結果(Expected Output):
abc
錯誤結果(Wrong Output):
什麼都沒有 = =a
程式碼(Code):(請善用置底文網頁, 記得排版)
網頁版 : http://codepad.org/IXO7jWSE
#include "stdio.h"
#include "stdlib.h"
char *func(){
char str[] = {'a','b','c','\0'};
return str;
}
int main () {
char *aaa;
aaa = func();
printf ("%s", aaa);
system ("PAUSE");
}
補充說明(Supplement):
如果有觀念上錯誤的問題 麻煩各位大大堤點 給我關鍵字 >"<
有時候印出來 還會出現亂碼= =a
我自己推斷,func裡面的str陣列已經給予字串了
所以這時候return會應該是str這陣列的開頭記憶體位置啊,
所以回傳到 aaa 剛好會存原本字串的位置
印出時候理論上 就會去位置上 將一個個的字元印出,直到遇到'\0'才停
但為什麼不是我的預期呢 = =a
以上 謝謝 >"<
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.161.9.204
→
09/18 22:56, , 1F
09/18 22:56, 1F
推
09/18 22:56, , 2F
09/18 22:56, 2F
→
09/18 22:57, , 3F
09/18 22:57, 3F
→
09/18 23:03, , 4F
09/18 23:03, 4F
→
09/18 23:06, , 5F
09/18 23:06, 5F
→
09/18 23:06, , 6F
09/18 23:06, 6F
→
09/18 23:06, , 7F
09/18 23:06, 7F
推
09/19 09:25, , 8F
09/19 09:25, 8F
→
09/19 09:26, , 9F
09/19 09:26, 9F
→
09/19 09:26, , 10F
09/19 09:26, 10F
推
09/19 10:12, , 11F
09/19 10:12, 11F
推
09/20 20:54, , 12F
09/20 20:54, 12F