我正在学习C语言的一些基础知识,我在理解指针方面有很大的问题,至少在某种程度上我猜是这样。
这是一本书中的一个例子,但它并不能解释为什么在这种情况下会这样。所以:

int contestants[] = { 1, 2, 3 };
int *choice = contestants;
contestants[0] = 2;
contestants[1] = contestants[2];
//contestants[2] = *choice;
printf("%d\n", *(choice));
printf("%d\n", choice[0]);
printf("I'm going to pick contestant number %i\n", contestants[2]);

我的问题是,如果我取消注释上面的行,为什么它会给我一个值2而不是3(最后一个printf)。基本上,注释行是我掌握这些非常简单的行的限制,显然。谢谢

最佳答案

int contestants[] = {1, 2, 3};
int *choice = contestants;

choice指向contestants
contestants[0] = 2;
contestants[1] = contestants[2];

contestants现在是2, 3, 3
*choice是第一个值,因此2
contestants[2] = *choice;

参赛者现在2, 3, 2

08-16 19:47