我正在通过C来到以下示例,我从"C指针"这本书中无法理解.这是代码.
以下声明存在于一个源文件中:
int a[10];
int *b = a;
Run Code Online (Sandbox Code Playgroud)
但是在不同的源文件中,这段代码是:
extern int *a;
extern int b[];
int x, y;
...
x = a[3];
y = b[3];
Run Code Online (Sandbox Code Playgroud)
有人可以解释执行两个赋值语句时会发生什么吗?(假设整数和指针都占用四个字节.)
当我尝试运行代码时,它给了我分段错误x,当我将它注释掉并打印y的值时,它给了我0.概念是指针和数组之间的一些区别.
会发生什么是未定义的行为,在您的情况下,它表现为一个分段错误.
你很可能想要这个:
int a[10];
int *b = a;
extern int *b;
extern int a[];
Run Code Online (Sandbox Code Playgroud)
然后你的两个任务都将获取a索引3处的元素并将其放入x和中y.