【问题标题】:returning pointer of a local variable to main() function [duplicate]将局部变量的指针返回给main()函数[重复]
【发布时间】:2017-10-28 06:42:37
【问题描述】:

我正在尝试将存储在局部变量中的值返回给 main() 函数。

#include<stdio.h>
int *func();
int main()
{
    int *ptr;
    ptr = func();
    printf("%d", *ptr);
    printf("%d", *ptr);
    return 0;
}

int *func()
{
    int x = 5, *p;
    p = &x;
    return p;
}

第一个 printf() 语句给出了 output = 5,但第二个 printf() 语句给出了一个垃圾值作为输出。

我知道函数“func()”终止后局部变量“x”将不存在。那么为什么它为第一个 printf() 语句打印 5 呢? 请告诉我代码中发生了什么。

【问题讨论】:

  • 你的空格键有问题吗 - 你的代码缩进会很好

标签: c


【解决方案1】:

当调用func 时,它会为其局部变量xp 创建一个堆栈。但是,当它返回时,该堆栈被销毁。因此,p 指向一个已经被销毁的值,所以它的行为是不确定的。

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 2023-04-09
    • 2016-10-25
    • 2020-10-13
    • 2014-05-14
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多