下面兩個函數之間是否有任何區別並不在於兩種情況下返回的局部變量的地址,而是使用f1()函數返回正確的值4而不是f2()。另外在第三種情況下,我正確的說,字符串常量不會被存儲在堆棧中,所以當我們返回指針時它將正常工作。那麼字符串常量在哪裏存儲?字符串常量存儲
int* f1()
{
int* a=(int*)4;
return a;
}
int* f2()
{
int a=4;
return &a;
}
char* f3()
{
char* p="abcd";
return p;
}
這兩個函數是否有區別 - 而且您已經提供了3個函數! :) – tuxuday
爲了記錄,您不應該返回指向堆棧變量的指針。在函數退出後,該內存很可能會用於其他內容。 –
不應該有人做了一個諷刺評論「這是家庭作業」現在大聲笑 – UNECS