-1

我有以下代码,问题要求我找到输出。我通过输入找到了输出 (2),但我无法弄清楚如何/为什么。有什么帮助吗?

这是代码:

int scores[5];
int *numbers = scores;
for (int i=0; i <=4; i++)
  *(numbers+i)=i;
cout << numbers[2] <<endl;
4

3 回答 3

0

您的代码基本上可以

scores[2] = 2;
cout<<scores[2]<<endl;

因此答案..

更详细地说:

int scores[5];
int *numbers = scores;  //numbers points to the memory location of the array scores
for (int i=0; i <=4; i++) // as mentioned, stray ';'
  *(numbers+i)=i; //same as numbers[i] = i  which is same as scores[i] = i
cout << numbers[2] <<endl;
于 2013-04-24T02:13:16.177 回答
0

for 循环执行的唯一语句是

*(numbers+i)=i;

它将使用尊重运算符 (*) 将 int 元素的索引存储在该位置。

然后打印出第三个数字,它等于 2,因为数组从索引 0 开始。

于 2013-04-24T02:17:13.587 回答
0

您设置一个指向数组的第一个内存位置的指针,然后遍历一系列内存地址并写入它们。应该注意的是,使用带有解引用的指针算术,

*(pointer + i) = i;

与使用下标运算符相同:

pointer[i] = i;
于 2013-04-24T02:19:55.940 回答