我有以下代码,问题要求我找到输出。我通过输入找到了输出 (2),但我无法弄清楚如何/为什么。有什么帮助吗?
这是代码:
int scores[5];
int *numbers = scores;
for (int i=0; i <=4; i++)
*(numbers+i)=i;
cout << numbers[2] <<endl;
您的代码基本上可以
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;
for 循环执行的唯一语句是
*(numbers+i)=i;
它将使用尊重运算符 (*) 将 int 元素的索引存储在该位置。
然后打印出第三个数字,它等于 2,因为数组从索引 0 开始。
您设置一个指向数组的第一个内存位置的指针,然后遍历一系列内存地址并写入它们。应该注意的是,使用带有解引用的指针算术,
*(pointer + i) = i;
与使用下标运算符相同:
pointer[i] = i;