【发布时间】:2013-11-12 11:46:33
【问题描述】:
请问,这段代码有什么问题。它应该打印到 y[4] 然后退出 while 循环,但它打印到 y[12] 并从那里中断;我认为在 y[5] 到 y[12] 之间打印是错误的。以一个网站为例,指针运算仅限于数组元素和一个元素之外的元素。
#include <stdio.h>
int main()
{
int i = 0;
int x[5] = {0, 1, 2, 3, 4};
int y[5];
int *ptr = x;
while (&y[i] != (ptr+5)){
y[i] = x[i];
printf("Value of y[%d] is : %d\n", i, y[i]);
i++;
}
return 0 ;
}
【问题讨论】:
-
(检查一下,但我几乎可以肯定,不能保证 y 会在 x 之后立即分配)
-
你宁愿想要
while (&x[i] != ptr + 5)。 -
我相信你的说法是正确的,H2CO3。 y[i] 已声明但未初始化。我才意识到。在一个网站上找到它。谢谢