【发布时间】:2020-05-25 14:40:12
【问题描述】:
我正在阅读一本 C++ 书,上面写着:
C++ 通过引用将数组传递给函数——被调用的函数可以修改调用者原始数组中的元素值。
指的是这样的情况:
int hourlyTemperatures[ 24 ];
modifyArray( hourlyTemperatures, 24 );
然而,这里是普通的 C 数组指针,对吧?没有使用 C++“引用”技术,传递的是 值指针,在这种情况下,是指向数组第一个元素的指针。最终结果是该函数确实可以访问完整的原始数组,就像引用一样,但这实际上并不是按引用传递,对吧?
来自 Prentice Hall 的这本书:
【问题讨论】:
-
通过引用传递数组需要
int (&)[24](或std::array<int, 24> &)类型的参数。 -
是的,你是对的,这本书是错误的,它在谈论 C 数组如何作为指针传递,并且混淆了“按引用传递”和“传递指针”按价值”。
-
^^ 同意。坏书就是坏书。
-
不是术语错误,而是已经过时了。 20 年前没有区别。
-
@HotLicks:即使当时没有错,现在也是了。