C ++标准似乎对数组有点简洁。
假设我有两种不同的数据类型:T1
和T2
。我创建了每个数组的数组,两个数组的长度相同N
;所以我有T1[N]
和T2[N]
。
现在,sizeof(T1[N]) == sizeof(T2[N])
是否意味着两个数组的连续元素将具有相同的偏移量?
或者,以更实际的形式:如果我(处理对齐问题)将char[sizeof(T1[N])]
投射到T1*
和T2*
,是否保证T1[0]
和T2[1]
不会重叠,反之亦然?
答案 0 :(得分:4)
是
数组的末尾没有任何填充或对齐,因此sizeof(T1[N])
总是等于sizeof(T1) * N
。
了解这一点,我们知道sizeof(T1[N]) == sizeof(T2[N])
隐含sizeof(T1) == sizeof(T2)
(取消双方的N
)。另外,数组必须是连续的,数组内部没有对齐或填充。因此,你的问题的答案是肯定的。