gpt4 book ai didi

c - 返回指向静态变量的局部指针

转载 作者:太空狗 更新时间:2023-10-29 17:18:35 25 4
gpt4 key购买 nike

<分区>

这是代码,

char *foo()
{
static char s[10] = "abcde";
return s;
}

char *bar()
{
char *c = foo();
return c;
}

int main()
{
printf("%s\n", bar());
}

通常,像我在 bar 中那样返回一个本地指针是错误的,但是现在 c 指向一个 static 返回的 var foo,在 bar 中返回本地变量 c 是否正确?

我试过了,printf 是正确的值,但我不明白它是如何工作的。我想,当 bar() 完成时,var c 应该消失,这应该使 printf 打印未定义的东西,对吧?

跟进

char *c 是本地变量,如果 char *c = "abcde";,我假设:c 是本地变量var 驻留在函数的堆栈中,而 "abcde" 是驻留在常量区域(堆的一部分?)中的常量 var,所以当 bar()完成后,c 消失了,但是 "abcde" 仍然保留在堆中,对吗?

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