2

C++ 标准似乎对数组有点简洁。

假设我有两种不同的数据类型:T1T2. 我为每个数组创建了数组,两个数组的长度相同N;所以我有T1[N]T2[N]

现在,是否sizeof(T1[N]) == sizeof(T2[N])暗示两个数组的连续元素将具有相同的偏移量?

或者,以更实用的形式:如果我(处理对齐问题)char[sizeof(T1[N])]同时投射 toT1*和 to T2*,是否保证T1[0]并且T2[1]不会重叠,反之亦然?

4

1 回答 1

4

是的。

数组的末端没有任何填充或对齐,因此sizeof(T1[N])总是等于sizeof(T1) * N

知道了这一点,我们就知道这sizeof(T1[N]) == sizeof(T2[N])意味着sizeof(T1) == sizeof(T2)(取消N双方)。此外,数组必须是连续的,数组内部没有对齐或填充。因此,您的问题的答案是肯定的。

于 2012-08-18T09:51:01.433 回答