以下是我编写的代码。 按照我的概念,当func函数运行并向i分配100值,然后通过指针返回地址时,由于函数func堆栈中分配的内存不再可用,因此应该打印一些垃圾值,因此ptr现在应指向垃圾值。 但是在两种情况下运行代码后,i的输出均为100。谁能解释为什么?
int* func(){
int i=100;
int *ptr = &i;
printf("address is : %p\n",ptr);
printf("value is : %d\n",i);
return ptr;
}
void main(){
int x = 1;
int *r = func();
printf("%p : %d", r , *r);
}
以下是收到的输出。
地址是:0x7ffe4340efdc
值是:100
0x7ffe4340efdc:100