是函数原型吗
int sum_array(int array[], int arr_length);
和
int sum_array(int [], int arr_length);
相似?
如果是,则int []
是什么意思?
我可以通过交换他们的位置来定义上述原型,即
int sum_array( int arr_length, int array[]);
?
注意:我不知道指针(对不起)。
答案 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
的整数数组”类似。
第三个原型也可以工作,但变量将按相反的顺序推到堆栈上。只要原型和定义使用相同的顺序,您就可以这样做。