[問題] return pointer to local variable
有爬文發現前面有人問過類似問題
但仍然不太清楚
以下舉例說明疑惑的點
int *manip()
{
int ret=5;
int *ptr = &ret;
return ptr; //compiler沒有發出警告
}
int *manip2()
{
int ret = 3;
return &ret; //compiler有發出警告說 address of local variable returned
}
char *manip3()
{
char ret[]="123";
char *ptr = ret;
return ptr; //正常無警告
}
int main()
{
char *p3 = mainp3();
cout<<p3<<endl; //正常可執行 印出123
p3[0] = '9'; //正常可修改
cout<<p3<<endl; //印出正確 923
}
想請問各位大大,
1.manip()與manip2()是否為一樣的動作?
那為什麼compiler對於manip()不發警告?
是因為間接傳回位址的關係所以偵測不出來嗎?
2.manip3()回傳的不是pointer to local array variable嗎?
為什麼可以正常執行甚至可以修改呢?
希望獲得大大們的解答
非常感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.251.98
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416115349.A.6B8.html
推
11/16 13:34, , 1F
11/16 13:34, 1F
→
11/16 13:44, , 2F
11/16 13:44, 2F
→
11/16 13:44, , 3F
11/16 13:44, 3F
→
11/16 13:45, , 4F
11/16 13:45, 4F
→
11/16 13:45, , 5F
11/16 13:45, 5F
→
11/16 13:46, , 6F
11/16 13:46, 6F
推
11/16 13:59, , 7F
11/16 13:59, 7F
→
11/16 14:00, , 8F
11/16 14:00, 8F
→
11/16 14:01, , 9F
11/16 14:01, 9F
→
11/16 14:01, , 10F
11/16 14:01, 10F
→
11/16 14:07, , 11F
11/16 14:07, 11F
→
11/16 15:16, , 12F
11/16 15:16, 12F
→
11/16 15:17, , 13F
11/16 15:17, 13F
→
11/16 15:24, , 14F
11/16 15:24, 14F
→
11/16 16:12, , 15F
11/16 16:12, 15F
→
11/16 16:52, , 16F
11/16 16:52, 16F
→
11/17 10:10, , 17F
11/17 10:10, 17F
→
11/17 10:11, , 18F
11/17 10:11, 18F
→
11/17 10:12, , 19F
11/17 10:12, 19F
→
11/17 10:12, , 20F
11/17 10:12, 20F
→
11/18 13:02, , 21F
11/18 13:02, 21F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章