指向整数数组的指针和打印总和

Pointer to an Integer Array and Printing Sum

所以,有人告诉我... “编写一个函数 Adder(),它接收一个指向整数数组的指针作为输入,并使用它 指向 return 数组元素总和的指针。” 我非常成功。我的密码是

#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.

的本地指针

之所以可行,是因为将 1 添加到 int 指针(在您的情况下为 ptr)实际上会增加 int 的大小(这可能会有所不同,具体取决于机器)。

查看此问题的答案以获得更详细的解释:Why a pointer + 1 add 4 actually