为什么不能将数组的值作为参数?
为什么只能传递数组的首地址?
[解决办法]
数组除了初始化之外不能整体操作
sizeof等编译期行为会把数组名作为数组本身来理解,在运行时,除了初始化之外,数组名被使用时会自动转化为指向首元素的指针
在函数参数压栈之前,就把数组名作为一个指针来看待了
[解决办法]
所以提倡传容器的时候传引用,避免复制导致性能降低
[解决办法]
大对象传值一样会有这些问题的.
不过一般来说, 对象的数据如果太大, 都应该从堆中申请内存, 对象本身只保存一个指针, 就不大了.
主要是, 对象可以控制, 你可以重载拷贝构造函数, 重载 operator== 之类的来控制拷贝行为.
数组就没法了, 只能硬拷.
[解决办法]
还有一个原因就是要兼容 C 语言.
C 语言已经这样做了, C++ 只能继承过来.
而对象是 C 里面没有的, C 里面的结构体也不允许传的, C++ 才有机会扩展它.