【发布时间】:2021-09-28 05:47:01
【问题描述】:
在 C++ 中,当我必须在某个函数中使用数组时,我将数组作为参数传递并获取指向数组第一个元素的指针。虽然可以使用,而且使用指针也不麻烦,但我想知道是否存在一些内置头文件或任何其他指令集,当我想访问 i-数组的第一个元素我可以简单地写array[i],编译器会将它读取为*(array+i)?
如果存在就太好了,因为它会使其非常统一且易于编码,因为在我使用向量的所有时候,我都可以通过vector[i] 访问第 i 个元素,而在数组中我必须换一种方式使用*(array+i)。
另外,C++ 的开发者选择返回指向数组而不是对象本身的指针是否有某些原因?
【问题讨论】:
-
早在 1970 年代开发 C 语言时,您无法承受按值传递数组的费用。你没有多余的 CPU 能力来执行复制,如果你这样做了,你可能没有 RAM,所以总是通过引用传递和返回是一个优雅的解决方案。 C++ 在早期试图与 C++ 接近,虽然这两种语言已经明显分开,但如果现在改变数组规则,有很多遗留代码将停止工作。相反,现在我们建议您在需要值语义时使用
std::array。 -
@user4581301 实际上并非如此。数组在 C 中衰减是有原因的,但这不是因为“你不能通过它”
标签: c++ arrays parsing compilation stl