我想学C++初学者。道歉,如果我的问题没有适当的结构?我用阵列的工作,结果发现,我可以操作存储在通过的功能的数组中的值,而无需使用&
或参照符号传递。我不明白这是怎么可能的,因为缺乏&
标志意味着它是按值传递和复制由被操纵。数组如何通过引用或值或指针在C++中传递?
在其他地方,我读了数组由指针传递的,如果这是我没有使用任何明确的非关联化来操作数据的情况。你能解释一下当我传递数组时实际发生了什么吗?
边注:为什么我有指定列大小传递一个二维数组到一个函数是什么时候?
我想学C++初学者。道歉,如果我的问题没有适当的结构?我用阵列的工作,结果发现,我可以操作存储在通过的功能的数组中的值,而无需使用&
或参照符号传递。我不明白这是怎么可能的,因为缺乏&
标志意味着它是按值传递和复制由被操纵。数组如何通过引用或值或指针在C++中传递?
在其他地方,我读了数组由指针传递的,如果这是我没有使用任何明确的非关联化来操作数据的情况。你能解释一下当我传递数组时实际发生了什么吗?
边注:为什么我有指定列大小传递一个二维数组到一个函数是什么时候?
C-阵列衰变到指针。
一些声明误导太
void foo(const char name[42]);
实际上
void foo(const char* name);
只有参考/指针(难看的语法:/)允许以保持尺寸:
void foo(const char (&name)[42]);
void foo(const char (*name)[42]);
阵列可以衰减到一个指向第一个元素的指针,它是通过值传递给函数的指针。这个指针衰减是避免原始数组和使用适当的容器类型的原因之一(可能是'std :: vector') – user463035818
数组是通过指针传递的。如果你使用arr [i],它相当于*(arr + i),其中arr是数组的起始地址。 – user1438832
...我不应该在评论中回答,但我确信有一个完美的重复,只是没有找到它atm – user463035818