数组元素是否也按值或引用传递?

时间:2016-03-20 23:09:12

标签: c

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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 )...