0

是函数原型吗

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

int sum_array(int [], int arr_length);  

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

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

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

4

2 回答 2

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)
{ ... }

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

于 2013-06-27T20:16:49.310 回答
2

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

标识符 ... 仅出于描述目的而声明,并在声明末尾超出范围

因此,要回答您的第一个问题,前两个原型之间基本上没有区别。Andint []表示“一个整数数组”,以类似的方式int array[]表示“一个整数数组标识为array”。

第三个原型也可以,但是变量会以相反的顺序被压入堆栈。只要原型和定义使用相同的顺序,您就可以这样做。

于 2013-06-27T20:17:37.517 回答