C 理解功能原型
是功能原型吗C 理解功能原型,c,arrays,argument-passing,function-parameter,C,Arrays,Argument Passing,Function Parameter,是功能原型吗 int sum_array(int array[], int arr_length); 及 相似吗? 如果是,那么int[]是什么意思? 我可以通过交换它们的位置来定义上述原型吗 int sum_array( int arr_length, int array[]); ? 注意:我不知道指针(很抱歉) 两个原型是相同的。第一个参数仅为第一个参数命名: int sum_array(int array[], int arr_length); 或 都是一样的。在protot
int sum_array(int array[], int arr_length);
及
相似吗?如果是,那么
int[]
是什么意思?我可以通过交换它们的位置来定义上述原型吗
int sum_array( int arr_length, int array[]);
?注意:我不知道指针(很抱歉) 两个原型是相同的。第一个参数仅为第一个参数命名:
int sum_array(int array[], int arr_length);
或
都是一样的。在prototype中命名参数仅用于信息目的
同样,您可以执行以下操作:
int sum_array(int [], int);
在此之后,实现将如下所示:
int sum_array(int array[], int arr_length)
{ ... }
但是不能交换参数,这不是一回事。
如果交换参数,则实现和对该函数的调用也必须交换参数。两个原型是相同的。第一个参数仅为第一个参数命名:
int sum_array(int array[], int arr_length);
或
都是一样的。在prototype中命名参数仅用于信息目的
同样,您可以执行以下操作:
int sum_array(int [], int);
在此之后,实现将如下所示:
int sum_array(int array[], int arr_length)
{ ... }
但是不能交换参数,这不是一回事。
如果交换参数,则实现和调用此函数时也必须交换参数。C标准规定,您可以在函数原型中声明参数的标识符,但不必这样做 标识符。。。声明仅用于描述性目的,在声明结束时超出范围 所以要回答你的第一个问题,前两个原型基本上没有区别。而
int[]
表示“整数数组”,与int array[]
表示“标识为array
的整数数组”类似
第三个原型也可以工作,但是变量将以相反的顺序推送到堆栈上。只要原型和定义使用相同的顺序,您就可以这样做。C标准规定,您可以在函数原型中声明参数的标识符,但不必这样做 标识符。。。声明仅用于描述性目的,在声明结束时超出范围 所以要回答你的第一个问题,前两个原型基本上没有区别。而
int[]
表示“整数数组”,与int array[]
表示“标识为array
的整数数组”类似
第三个原型也可以工作,但是变量将以相反的顺序推送到堆栈上。只要原型和定义使用相同的顺序,就可以这样做。int[]的含义是什么?它只是告诉编译器参数将是一个int数组。它与
int-array[]
相同,但这里您为参数指定了一个名称以便于描述。我更喜欢在我的原型中命名参数,它让我更容易读取头文件。谢谢你的回答。(+1)。int[]
的意思是什么?它只是告诉编译器参数将是int
的数组。它与int-array[]
相同,但这里您为参数指定了一个名称以便于描述。我更喜欢在我的原型中命名参数,它使我更容易读取头文件。谢谢你的回答。(+1)。这意味着,如果函数调用传递的参数交换到?正好,交换将起作用;否则您将得到一个编译器错误,因为编译器会觉得您试图使用int
来代替int[]
,反之亦然。明白了+第三段为1。参数不一定被推到堆栈上。所有相关的是所有原型和调用都必须一致。这意味着,如果函数调用传递的参数被精确地交换到,那么交换将起作用;否则您将得到一个编译器错误,因为编译器会觉得您试图使用int
来代替int[]
,反之亦然。明白了+第三段为1。参数不一定被推到堆栈上。所有相关的是所有原型和调用都必须一致。在原型中,inta_very_long_name[]
,inta_long_name[]
,inta_name[]
,inta[]
都意味着相同的事情。@JimBalter;但我认为在最后一个变量中,即int[]
,没有变量名。是的。。。你的意思是什么?在原型中不使用变量名(在大多数情况下,比如这一个;也有例外),只是为了清晰/文档化。你已经阅读了答案并接受了一个,所以你现在应该知道了。我的观点很清楚……我被int[]
弄糊涂了。我认为它是如何表示一个没有变量名的数组的。。。最后一句话当然不是。在原型中,inta_long_name[]
,inta_long_name[]
,inta_name[]
,inta[]
都是同一意思。@JimBalter;但我认为在最后一个变量中,即int[]
,没有变量名。是的。。。你的意思是什么?在原型中不使用变量名(在大多数情况下,比如这一个;也有例外),只是为了清晰/文档化。你已经阅读了答案并接受了一个,所以你现在应该知道了。我的观点很清楚……我被int[]
弄糊涂了。我认为它是如何表示一个没有变量名的数组的。。。最后一句肯定不是。