关于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的地址是一样的呢
,这是巧合还是什么原因??