C 将数组参数传递给函数

C 将数组参数传递给函数,c,argument-passing,function-parameter,C,Argument Passing,Function Parameter,关于调用函数 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[]作

关于调用函数

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\u数组(b[],10)

注意:我不知道指针。

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

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

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


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

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

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

  • 为什么要将参数b而不是b[]作为sum_数组传递(b[],10)
简短回答:因为
b[]
是无效语法

这里

变量
b
已声明
int[10]
是变量的类型

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

  • 注意:我不知道指针
它与指针无关。

  • 为什么要将参数b而不是b[]作为sum_数组传递(b[],10)
简短回答:因为
b[]
是无效语法

这里

变量
b
已声明
int[10]
是变量的类型

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

  • 注意:我不知道指针

它与指针无关。

因为
b
是变量的名称;括号是变量类型的一部分,不需要调用函数。@RobI应该传递它(
b[]
还是不传递?变量
b
可以在写入时传递给函数-
sum_数组(b,10)
。不需要传递
b[]
到函数。是的……这是我的问题,为什么我不能通过
b[]
?“为什么我不能通过b[]”--
b[]
是一系列3个标记,不是你可以传递的那种。你要传递的是数组
b
,你可以使用它的名称
b
。因为
b
是变量的名称;括号是变量类型的一部分,不需要调用函数。@RobI应该这样做(
b[]
是否传递?变量
b
可以在写入时传递给函数-
sum_数组(b,10)
。没有必要(也不会工作)将
b[]
传递给函数。是的……这就是我为什么不能传递
b[]
?“为什么我不能传递b[]”--
b[]
是一系列的3个标记,不是你可以传递的那种。你想要传递的是数组
b
,你可以使用它的名字
b
。你必须阅读一本教程。指针是非常基本的。我离指针只有两章之遥。但是现在呢?还有什么其他的方法可以理解这个吗?试着写一段代码th指针,玩它。。它会崩溃,你会调试,你会流汗,但最终会明白。@haccks没有什么是不可能的。@haccks“千里之行始于一步”。@haccks当你写
intb;
时,
b
是int(整数)类型的变量。但是当你写
intb[10]
然后
b
是10个整数的数组。你必须读一本教程。指针是非常基础的。我离指针只有两章之遥。但是现在呢?还有什么其他方法可以理解吗?试着用指针编写代码,玩它。它会崩溃,你会调试,你会汗流浃背,但最终会理解的。@haccks没有什么是不可能的e、 “千里之行始于足下”。@haccks当你写
intb;
那么
b
是int(整数)类型的变量。但是当你写
intb[10];
那么
b
是10个整数的数组。
int b[10];