如果数组总是通过引用传递,那么如何将数组传递给像printf这样严格按值调用的函数?

use*_*826 1 c arrays pointers

c中的数组总是通过引用传递,printf是一个值函数调用,那么为什么我们将数组传递给printf函数来打印一个字符串呢?

cad*_*luk 5

首先,数组不会通过C中的引用传递.它们衰减到一个指针,它通过传递给函数.在C中
没有通过引用传递.它只能通过值传递来模拟.

我们并没有真正地将数组传递给printf:它是我们通过隐式转换(衰变)获得的上述指针.这个指针也可以被解除引用以访问数组的内容,因此根本不需要"按值"传递数组.