任何人都可以解释以下代码的输出吗?

时间:2019-06-12 13:38:12

标签: c pointers memory-management reference

以下是我编写的代码。 按照我的概念,当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

0 个答案:

没有答案