【发布时间】:2011-10-27 17:48:17
【问题描述】:
为什么不能将数组作为函数参数传递?
我一直在阅读这本 C++ 书,上面说“你不能将数组作为函数参数传递”,但它从未解释过原因。此外,当我在网上查找时,我发现了类似“你为什么要这样做?”之类的 cmets。不是我会做,我只是想知道你为什么做不到。
【问题讨论】:
-
请注意他的正文中写着“by value”。
-
可能是因为复制整个数组只是为了通过值作为函数参数传递它很容易导致堆栈溢出和/或非常慢?
-
@In silico:那为什么允许创建数组作为局部变量,它们具有相同的自动生命周期?
-
@Ben Voigt:我看不出这与按值传递数组的问题有什么关系。我想要得到的是,按值传递数组肯定会涉及将其内容复制到堆栈帧中,这是浪费时间和内存,因为将指针传递给第一个元素可以让您获得相同的访问它的能力但是以一种更简单、更快且占用内存更少的方式。
-
@In:但做出这样的决定与 C 非常不同。我们几乎可以做任何其他事情,如果我想复制我的数组怎么办?为什么仅将数组放入结构中就可以消除此规则?您的论点将适用于这样的结构。
标签: c++ arrays pointers pass-by-reference