C 数组元素也是通过值传递还是通过引用传递?

C 数组元素也是通过值传递还是通过引用传递?,c,C,我知道数组在函数调用中是通过引用传递的,但是如果只传递数组元素,例如func(ar[0]),该怎么办呢。arg[0]是通过值传递还是通过引用传递?无论数组类型是什么,都将传递而不是指向该元素的指针 int a[2]; a[0] =5; a[1] =6; func1( a[0] ); // passes int to func1 func2( &a[1] ); // passes pointer to int func1( int z )... func2( int * z )...

我知道数组在函数调用中是通过引用传递的,但是如果只传递数组元素,例如
func(ar[0])
,该怎么办呢。
arg[0]
是通过值传递还是通过引用传递?

无论数组类型是什么,都将传递而不是指向该元素的指针

int a[2];
a[0] =5;
a[1] =6;

func1( a[0] ); // passes int to func1
func2( &a[1] ); // passes pointer to int 

func1( int z )...
func2( int * z )...

数组不是通过引用传递的,当用作函数参数或表达式时,它们会作为指针衰减,除非作为
sizeof
运算符的操作数。因此,无论参数在函数原型中如何定义,函数都会接收指向数组第一个元素的指针,即指针或数组


如果传递一个数组元素,它将按值传递,除非该数组元素本身是数组,在这种情况下,将传递指向第一个元素的指针。

取决于它是否是数组。更大的代码示例将帮助数组不通过引用传递。不过,数组表达式衰减为指向其第一个元素的指针,该元素通常传递给函数。C中的所有内容都是按值传递的。@KerrekSB数组在C中是按引用传递的。有关“按引用传递”的定义。一个指针符合的定义。@AndrésRivero:您能单击答案分数下面的灰色复选标记将其标记为已接受吗?