#include<stdio.h>
int* a(int* b){
int a = 20;
printf("\n \n");
if(a == 20){
printf("\n return from if a : 0x%x \n",a);
return &a;
}
else{
printf("\n returning from else b : 0x%x\n",b);
return b;
}
}
int main(){
int n = 10;
int *k,*m;
k = &n;
m = a(k);
printf("\n m ; 0x%x m : %d \n",m,*m);
return 0;
}
這裏我返回返回指針函數的局部變量。在函數退出期間,所有變量都將從堆棧內存中移出,但函數如何仍然保留地址'a'處的值並打印數據?本地變量地址可以保存在返回指針的函數中
O/P:
return from if a : 0xbfd8cf14
m ; 0xbfd8cf14 m : 20
的地址被保持在指針m和它正確打印的值。我試過改變不同的號碼。
標記爲C++,但完全相關:http:// stackoverflow。com/questions/6441218/can-a-local-variables-memory-be-accessible-scope- – chris 2013-04-09 13:38:51
@chris:這個鏈接有一個很好的解釋。謝謝。 – Angus 2013-04-09 13:56:54
酒店房間的答案在這裏有點出名。 – chris 2013-04-09 13:58:16