【发布时间】:2012-10-15 13:34:00
【问题描述】:
定理说我们不能将一个数组初始化为另一个数组的副本。 但是我们可以将指针初始化为指向另一个数组的第一个元素的指针的副本:
int a[] = {0, 1, 2};
int a2[] = a; //error
int *a3 = a; //OK
为什么int a2[] = a; 是错误的?
【问题讨论】:
-
因为:数组是 NOT 指针!
-
长话短说,使用
std::array和复制初始化等。 -
@Als 这本身并不能解释为什么没有(简单的,基于赋值运算符的)语法来复制初始化数组。
-
@jogojapan:如果我的评论不是答案,Q 应该是:“为什么数组是不可修改的左值?” 但 Q 是 “为什么我们可以复制指针,但我们不能复制c++中的数组”,答案在我的评论中(因为数组不是指针)。
标签: c++