两个相同大小(和长度)的数组是否具有相同的元素偏移

Do two arrays of the same size (and length) have same element offsets?

本文关键字:是否 数组 元素 两个      更新时间:2023-10-16

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

假设我有两种不同的数据类型:T1T2。我为它们中的每一个创建数组,两个数组的长度相同N;所以我有CCD_ 4和CCD_。

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

或者,在更实际的形式中:如果我(处理对齐问题)将char[sizeof(T1[N])]同时投射到T1*T2*,是否保证T1[0]T2[1]不会重叠,反之亦然?

是。

阵列的末端没有任何填充或对齐,因此sizeof(T1[N])始终等于sizeof(T1) * N

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