[問題] function 裡的變數 存活時間
我朋友最近去面試
其中有一個主管考一題
char *fun()
{
char str[] = {"Hello"};
return str;
}
void main()
{
char *p = NULL;
p = fun();
printf("%s\n", p);
}
問結果如何
主管給的回答是這樣可以把指標傳出來
所以可以印出結果
我的觀念是 function 的變數只要離開迴圈
都會被歸還OS(除了malloc)
我的想法對嗎?
我在公司電腦(ubuntu)
的確可以印出字串 囧
但家裡的電腦(ubuntu)卻印出亂碼
我有印出指標位址
的確可以把位址傳出來
我後來想想
在公司電腦可以順利印出字串
是運氣好 剛好那段位址的內容沒被覆蓋??
如果想法有錯誤
請各位前輩能多給指導
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.11.95
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1513867566.A.E49.html
→
12/21 22:54,
6年前
, 1F
12/21 22:54, 1F
→
12/21 22:56,
6年前
, 2F
12/21 22:56, 2F
推
12/21 23:04,
6年前
, 3F
12/21 23:04, 3F
→
12/21 23:06,
6年前
, 4F
12/21 23:06, 4F
→
12/21 23:10,
6年前
, 5F
12/21 23:10, 5F
→
12/21 23:12,
6年前
, 6F
12/21 23:12, 6F
→
12/21 23:12,
6年前
, 7F
12/21 23:12, 7F
推
12/22 02:21,
6年前
, 8F
12/22 02:21, 8F
→
12/22 02:22,
6年前
, 9F
12/22 02:22, 9F
推
12/22 13:21,
6年前
, 10F
12/22 13:21, 10F
→
12/22 13:34,
6年前
, 11F
12/22 13:34, 11F
→
12/22 13:34,
6年前
, 12F
12/22 13:34, 12F
→
12/22 13:42,
6年前
, 13F
12/22 13:42, 13F
→
12/22 13:42,
6年前
, 14F
12/22 13:42, 14F
→
12/22 13:43,
6年前
, 15F
12/22 13:43, 15F
→
12/22 13:44,
6年前
, 16F
12/22 13:44, 16F
→
12/22 15:00,
6年前
, 17F
12/22 15:00, 17F
→
12/22 15:00,
6年前
, 18F
12/22 15:00, 18F
推
12/22 15:39,
6年前
, 19F
12/22 15:39, 19F
→
12/22 15:39,
6年前
, 20F
12/22 15:39, 20F
推
12/22 18:47,
6年前
, 21F
12/22 18:47, 21F
→
01/04 19:34,
7年前
, 22F
01/04 19:34, 22F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):