gpt4 book ai didi

在C中使用指针调用变量后更改值

转载 作者:行者123 更新时间:2023-11-30 19:09:27 24 4
gpt4 key购买 nike

所以我开始用 C 编程。现在我遇到了指针问题:

int * diff(){
int array[2] = {1,2};
return array;
}

int main(int argc, char const *argv[]) {
int *p;
p = diff();
printf("%d\n", *(p));
printf("%d\n", *(p));

return 0;
}

启动程序后。我的终端显示以下内容:

1
0

那么为什么 *p 的值会改变呢?

最佳答案

您的程序的行为未定义

array 具有自动存储持续时间(非正式地,将其视为“局部变量”),并且不允许取消引用返回到 main 的指向它的指针通过语言。

(我们称之为悬空指针)。

关于在C中使用指针调用变量后更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43263318/

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