#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