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

问题描述 投票:-1回答:1

所以,我被告知要...“编写一个函数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”保留实际值。我不明白这是如何工作的。有人可以解释吗?

c++ arrays pointers pass-by-reference
1个回答
0
投票

int Adder (int *ptr)

定义一个函数,该函数将指向int的指针作为其参数。在这种情况下,*ptr不引用ptr指向的值。

Adder(ptr);

调用该函数,传递名为ptr的本地指针。


0
投票

之所以起作用的原因是,在int指针(在您的情况下为ptr)上加1实际上会增加int的大小(根据机器而异)。

请参阅此问题的答案以获取更详细的解释:Why a pointer + 1 add 4 actually

© www.soinside.com 2019 - 2024. All rights reserved.