是函数原型吗
int sum_array(int array[], int arr_length);
和
int sum_array(int [], int arr_length);
相似的?
如果是,那是什么int []
意思?
我可以通过交换位置来定义上述原型吗,即
int sum_array( int arr_length, int array[]);
?
注意:我不知道指针(对不起)。
是函数原型吗
int sum_array(int array[], int arr_length);
和
int sum_array(int [], int arr_length);
相似的?
如果是,那是什么int []
意思?
我可以通过交换位置来定义上述原型吗,即
int sum_array( int arr_length, int array[]);
?
注意:我不知道指针(对不起)。
两个原型都是一样的。第一个只是为第一个参数命名:
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)
{ ... }
但是你不能交换参数,那不是一回事。如果交换参数,则该函数的实现和调用也必须交换参数。
C 标准规定您可以为函数原型中的参数声明标识符,但您不必这样做。
标识符 ... 仅出于描述目的而声明,并在声明末尾超出范围
因此,要回答您的第一个问题,前两个原型之间基本上没有区别。Andint []
表示“一个整数数组”,以类似的方式int array[]
表示“一个整数数组标识为array
”。
第三个原型也可以,但是变量会以相反的顺序被压入堆栈。只要原型和定义使用相同的顺序,您就可以这样做。