Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++ 标准似乎对数组有点简洁。
假设我有两种不同的数据类型:T1和T2. 我为每个数组创建了数组,两个数组的长度相同N;所以我有T1[N]和T2[N]。
T1
T2
N
T1[N]
T2[N]
现在,是否sizeof(T1[N]) == sizeof(T2[N])暗示两个数组的连续元素将具有相同的偏移量?
sizeof(T1[N]) == sizeof(T2[N])
或者,以更实用的形式:如果我(处理对齐问题)char[sizeof(T1[N])]同时投射 toT1*和 to T2*,是否保证T1[0]并且T2[1]不会重叠,反之亦然?
char[sizeof(T1[N])]
T1*
T2*
T1[0]
T2[1]
是的。
数组的末端没有任何填充或对齐,因此sizeof(T1[N])总是等于sizeof(T1) * N。
sizeof(T1[N])
sizeof(T1) * N
知道了这一点,我们就知道这sizeof(T1[N]) == sizeof(T2[N])意味着sizeof(T1) == sizeof(T2)(取消N双方)。此外,数组必须是连续的,数组内部没有对齐或填充。因此,您的问题的答案是肯定的。
sizeof(T1) == sizeof(T2)