所以,我被告知要...“编写一个函数Adder(),该函数接收一个指向整数数组的指针作为输入,并使用此函数返回数组元素之和的指针。”而且我非常成功。我的代码是
#include <bits/stdc++.h>
using namespace std;
int Adder (int *ptr)
{
int sum=0;
for (int i=0; i<5; i++)
{
sum=*(ptr+i)+sum;
}
return sum;
}
int main(){
int array[5]={1,1,1,1,1};
int sum;
int *ptr=array;
Adder(ptr);
sum=Adder(ptr);
cout<<sum;
}
我无法理解的是我在哪里
Adder(ptr)
然后
int Adder (int *ptr)
“ ptr”保存地址,对吗?而“ * ptr”保留实际值。我不明白这是如何工作的。有人可以解释吗?
行
int Adder (int *ptr)
定义一个函数,该函数将指向int
的指针作为其参数。在这种情况下,*ptr
不引用ptr
指向的值。
行
Adder(ptr);
调用该函数,传递名为ptr
的本地指针。
之所以起作用的原因是,在int
指针(在您的情况下为ptr
)上加1实际上会增加int
的大小(根据机器而异)。
请参阅此问题的答案以获取更详细的解释:Why a pointer + 1 add 4 actually