我是一名初学者,正在尝试学习C ++。如果我的问题结构不正确,请道歉?我正在使用数组,发现我可以通过函数操作存储在数组中的值,而不使用&
或通过引用符号传递。我不明白这是怎么可能的,因为缺少&
符号意味着它是按值传递的,并且制作了一个被操纵的副本。
在其他地方,我读到数组是通过指针传递的,如果是这种情况我没有使用任何显式解除引用来操纵数据。你能解释一下我传递阵列时究竟发生了什么吗?
旁注:为什么在将2D数组传递给函数时必须指定列大小?
答案 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]);