gpt4 book ai didi

c++ - 为什么这个程序不打印垃圾值

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:44 25 4
gpt4 key购买 nike

<分区>

下面的程序可能会打印一些垃圾数据,因为字符串存储在函数 getString() 的堆栈帧中,并且在 getString() 返回后数据可能不存在。

#include <stdio.h>
char *getString()
{
char str[] = "abc";
return str;
}
int main()
{
printf("%s", getString());
return 0;
}

输出:垃圾值。

那么为什么下面的程序运行良好并且没有打印垃圾值。

#include<stdio.h>
int *fun()
{
int i=50;
int *p=&i;
return p;
}

int main()
{
int *q=fun();
printf("%d",*q);
return 0;
}

输出:50

这里 p 也是函数 fun() 中的指针,存储在堆栈段中。我在这里很困惑。为什么输出是 50 而不是垃圾值?

谢谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com