关于C语言变量地址不变的问题,问题如下图
程序代码:int dataType01() {
int num=10;
int* p = #
printf("\n&num = %d",&num);
printf("\nnum = %d",num);
/*
第一次编译运行结果:&num = 2358804
*/
return 0;
}
程序代码:
int dataType01() {
int num=10;
int* p = #
printf("\n&num = %d",&num);
printf("\nnum = %d",num);
*((int*)2358804) = 20;
printf("\nnum = %d",num);//num没有被释放?
/*
第二次编译运行结果:&num = 2358804
num = 10
num = 20
*/
return 0;
}
问题:num不是在栈中嘛,第一次编译运行完后,num被释放掉,然后第二次编译运行不是应该重新分配内存嘛,但为什么两次取出来num的地址是一样的呢
,这是巧合还是什么原因??




