gpt4 book ai didi

c - 未初始化的指针导致核心转储

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main(int argc,char **argv)
{
int x[3] = {42, 44, 48};
int *y;
int *z;
z=y;
y=x;

printf("%d, %d, %d\n", x[0], x[1], x[2]);
printf("%d, %d, %d\n", y[0], y[1], y[2]);
printf("%d, %d, %d\n", z[0], z[1], z[2]);

return 0;
}

当我尝试编译上面的代码时,出现错误消息

tester.c: In function ‘main’:
tester.c:15:2: warning: ‘y’ is used uninitialized in this function [-Wuninitialized]
z=y;
^

编译后的 printf 结果会在 Z 行中显示核心转储。我不确定我做错了什么,因为我之前已经做过指向数组的指针,但它并没有导致核心转储。

编辑:问题已得到解答。 z=y 和 y=x 的相反顺序。

最佳答案

按照建议(尽管 BLUEPIXY 也给出了相同的核心信息,因此是 CW 答案)。

您对 zy 的赋值顺序错误。您将未初始化的值分配给 z,然后设置 y。如果您先设置y,然后将结果复制到z,则可以避免出现问题。

注意编译器发出的警告是有好处的。请记住,尤其是当您学习时,它对 C 的了解比您多得多。

关于c - 未初始化的指针导致核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25757114/

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