gpt4 book ai didi

c - 将值设置为指针会导致程序崩溃

转载 作者:行者123 更新时间:2023-11-30 20:48:34 30 4
gpt4 key购买 nike

#include <stdio.h>

int main()
{
int* n;
*n = 20; // causes the crash
printf("%d\n", *n);
return 0;
}

但由于某种原因,如果我首先设置 int* n = i 那么我可以用 *n = 20 更改该值这有什么原因吗?

 int i = 19;
int* n;
*n = i;
*n = 20;

编辑:谢谢大家的帮助,我从你们的回答中学到了很多东西。

最佳答案

int* n;
*n = i;

不,您所看到的(在两个示例中)都是 undefined behavior 的结果。上面您没有初始化指针以指向有意义的内存 - 通过应用 * 运算符,您取消引用指针并告诉它向它指向的内存写入一些值>,但由于您没有使其指向有效内存 - 您无法通过该指针进行写入。

这样就好了

int x = 0;
int* n = &x; // Now your pointer points to valid memory
*n = 5; // Value of x will be 5 now

关于c - 将值设置为指针会导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871226/

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