Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 理解功能原型_C_Arrays_Argument Passing_Function Parameter - Fatal编程技术网

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[]
弄糊涂了。我认为它是如何表示一个没有变量名的数组的。。。最后一句肯定不是。