【发布时间】:2015-11-11 09:11:42
【问题描述】:
这可以在 C 中得到保证,因为 WG14/N1570 中有以下句子:
6.2.5/20 ... 数组类型描述了一个连续分配的非空对象集,具有特定的成员对象类型,称为元素类型。
但是在WG21/N4527中,即在C++中,对应的句子变成了
8.3.4/1 ...数组类型的对象包含一个连续分配的非空集合,由 N 个 T 类型的子对象组成。
而“描述”一词改为“包含”,不能保证数组的地址等于其第一个元素的地址。这种改变是有意的还是无意的?如果是故意的,数组的地址是否等于它在 C++ 中的第一个元素的地址?如果是,C++标准中的哪一段可以保证这一点?
【问题讨论】:
标签: c++ arrays language-lawyer memory-address