gpt4 book ai didi

c - 声明和定义之间的数组/指针不匹配 - 那么会发生什么?

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

我正在研究 C 并得出以下示例,我无法从一本书“Pointers on C”中理解它。这是代码。

以下声明存在于一个源文件中:

int     a[10];
int *b = a;

但是在不同的源文件中,这段代码是这样写的:

extern         int    *a;
extern int b[];
int x, y;
...
x = a[3];
y = b[3];

谁能解释一下这两条赋值语句执行时会发生什么? (认为整数和指针都占用四个字节。)

当我尝试运行代码时,它给了我 x 的段错误,当我注释掉它并打印 y 的值时,它给了我 0。这个概念是指针之间的一些差异和数组。

最佳答案

发生的是未定义的行为,在您的情况下表现为段错误。

你很可能想要这个:

int     a[10];
int *b = a;

extern int *b;
extern int a[];

然后您的两个作业都将在索引 3 处获取 a 的元素并将其放入 xy

关于c - 声明和定义之间的数组/指针不匹配 - 那么会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271550/

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