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