【问题标题】:Pointer to an Integer Array and Printing Sum指向整数数组的指针并打印总和
【发布时间】:2020-01-01 21:49:21
【问题描述】:

所以,我被告知... “编写一个函数 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”保存实际值。我无法理解这是如何工作的。谁能解释一下?

【问题讨论】:

  • ptr 保存地址,而*ptr 是指针指向的值。 * 称为解引用运算符。它取消引用指针以获取它指向的值
  • 你的问题不清楚。你问的是什么

标签: c++ arrays pointers pass-by-reference


【解决方案1】:

之所以可行,是因为将 1 添加到 int 指针(在您的情况下为 ptr)实际上会增加 int 的大小(可能因机器而异)。

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

【讨论】:

    【解决方案2】:

    线

    int Adder (int *ptr)
    

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

    线

    Adder(ptr);
    

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

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 2012-01-24
      • 1970-01-01
      • 2019-10-27
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多