gpt4 book ai didi

c - 为什么会有这样的输出

转载 作者:行者123 更新时间:2023-12-02 06:21:17 24 4
gpt4 key购买 nike

我在代码块中编译后执行了这段代码:-

#include <stdio.h>
int main()
{
char arr[]="HELLO";
int a=arr;
return printf("...%s ,%s\n",arr,&a+1);
}

我得到了这个输出:-...你好,你好

当我将 &a 更改为 a 时,printf 返回 -1。我无法理清这个地址逻辑,请帮忙。( friend 给了我这个代码,问了解释,没找到)。所以我想知道为什么..谢谢

最佳答案

您告诉 printf 需要一个字符串,但您给它的是 int (&a) 的地址。这会调用未定义的行为,因此任何事情都有可能发生。

[在实践中,可能发生的情况是编译器将 a 直接放在堆栈上的 arr 下方。所以 &a+1 的值最终等于 &arrprintf 然后将该地址重新解释为指向 char 的指针,因此最终打印 HELLO。如果编译器碰巧以不同方式排列堆栈,您会观察到不同的行为。]

关于c - 为什么会有这样的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928900/

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