如何通过引用或值或指针在C ++中传递数组?

时间:2017-06-22 10:09:28

标签: c++ arrays multidimensional-array

我是一名初学者,正在尝试学习C ++。如果我的问题结构不正确,请道歉?我正在使用数组,发现我可以通过函数操作存储在数组中的值,而不使用&或通过引用符号传递。我不明白这是怎么可能的,因为缺少&符号意味着它是按值传递的,并且制作了一个被操纵的副本。

在其他地方,我读到数组是通过指针传递的,如果是这种情况我没有使用任何显式解除引用来操纵数据。你能解释一下我传递阵列时究竟发生了什么吗?

旁注:为什么在将2D数组传递给函数时必须指定列大小?

1 个答案:

答案 0 :(得分:4)

C阵列衰减到指针。

有些声明也有误导性

void foo(const char name[42]);

实际上是

void foo(const char* name);

只有引用/指针(丑陋的语法:/)允许保持大小:

void foo(const char (&name)[42]);
void foo(const char (*name)[42]);