#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 中,并正确打印该值。我尝试改变不同的不。