gpt4 book ai didi

c - 编译以下代码时出现的警告背后的可能原因是什么

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

这是我编写的一段简单代码,用于检查返回局部变量的地址是否合法,编译器证明我的假设是正确的,编译器给出了同样的警告:

warning: function returns address of local variable

但是执行的时候打印的是正确的地址……好奇怪啊!

#include<stdio.h>
char * returnAddress();
main()
{
char *ptr;
ptr = returnAddress();
printf("%p\n",ptr);
}

char * returnAddress()
{
int x;
printf("%p\n",&x);
return &x;
}

最佳答案

行为未定义。

当您调用未定义的行为时,任何事情都可以发生 - 包括半正常的行为。

返回局部变量的地址。它仍然是一个地址;如果幸运的话,它甚至可能是一个有效地址。如果你访问它指向的数据,你会得到什么是任何人的猜测——尽管你最好不要知道。如果调用另一个函数,指向的空间可能会被新数据覆盖。

您应该收到有关 int 指针和 char 指针之间转换的警告,以及有关返回局部变量地址的警告。

关于c - 编译以下代码时出现的警告背后的可能原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6120425/

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