了解函数原型

时间:2013-06-27 19:50:54

标签: c arrays argument-passing function-parameter

是函数原型吗

int sum_array(int array[], int arr_length);  

int sum_array(int [], int arr_length);  

相似?
如果是,则int []是什么意思? 我可以通过交换他们的位置来定义上述原型,即

 int sum_array( int arr_length, int array[]); 


注意:我不知道指针(对不起)。

2 个答案:

答案 0 :(得分:4)

两种原型都是一样的。第一个参数只是给第一个参数命名:

int sum_array(int array[], int arr_length);

int sum_array(int [], int arr_length); 

是一样的。在原型中命名参数仅供参考。

以同样的方式,您可以:

int sum_array(int [], int);

之后,实现将如下所示:

int sum_array(int array[], int arr_length)
{ ... }

但你不能交换参数,这不是一回事。 如果交换参数,则实现和对此函数的调用也必须交换参数。

答案 1 :(得分:2)

C标准声明你可以在函数原型中声明参数的标识符,但你不必这样做。

  

标识符...仅用于描述目的,并且在声明结尾处超出范围

所以回答你的第一个问题,前两个原型基本上没有区别。并且int []表示“整数数组”,其方式与int array[]表示“标识为array的整数数组”类似。

第三个原型也可以工作,但变量将按相反的顺序推到堆栈上。只要原型和定义使用相同的顺序,您就可以这样做。