【问题标题】:Passing array argument to a function将数组参数传递给函数
【发布时间】:2013-06-27 20:58:32
【问题描述】:

在调用函数时

int sum_array(int array[], int arr_length)
{ 
   int sum = 0;  
   while(--arr_length >= 0)
      sum += array[arr_length];
   return sum;
}

在主函数中

 int main()
{
    int b[10];
    ...
    total = sum_array(b,10);
    ...
}

为什么将参数 b 而不是 b[] 传递为 sum_array(b[],10)
注意:我不知道指针。

【问题讨论】:

  • 因为b是变量名;括号是变量类型的一部分,不需要调用函数。
  • @RobI(b[]是否应该通过?
  • 变量 b 可以在编写时传递给函数 - sum_array(b,10)。没有必要(也不会工作)将b[] 传递给函数。
  • 是的.....这就是我的问题,为什么我不能通过b[]
  • "why i can't pass b[]" -- b[] 是一系列 3 个标记,不是你可以传递的那种东西。你要传递的是数组b,你可以使用它的名字b

标签: c argument-passing function-parameter


【解决方案1】:

在 C 中,数组作为 指针 传递给第一个元素。 b类型是数组。

在传递b 时,实际上是在传递一个指向数组第一个元素的指针。

【讨论】:

  • 必须阅读教程。指针是非常非常基础的。
  • 我离指针只有两章了。但是现在呢?还有什么其他方式可以理解吗?
  • 尝试用指针编写代码,玩弄它。它会崩溃,你会调试,你会流汗,但最终会明白。
  • @hacks 没有什么是不可能的。“千里之行始于一步”。
  • @hacks 当您编写 int b; 时,bint 类型的变量(整数)。但是当你写int b[10]; 时,b 是 10 个整数的 array
【解决方案2】:
  • 为什么将参数 b 而不是 b[] 作为 sum_array(b[],10) 传递

简答:因为b[] 的语法无效。

这里

int b[10];

声明了变量bint [10] 是变量的类型。

由于函数接受标识符作为参数,而不是类型,因此您应该将标识符传递给函数。标识符是b

  • 注意:我不知道指针。

与指针无关。

【讨论】:

    【解决方案3】:

    该函数需要一个指向 int 数组的指针,因此您需要传递一个指向数组开头的指针。 b[10] 指向十元素数组的第十一个 (!) 索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2013-01-27
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多