long long a64[10];
long k32, *p32;
p32 = ((long *) &a64[k32]) + 1;
我不明白最后一行。什么是p32完全指向?
答案 0 :(得分:1)
整个事情得到指向数组中k32
nd元素的后半部分的指针。
数组元素是long long
。 long long
的一半是long
。通过将long long *
指针转换为long *
然后递增1来找到后半部分。这将为您提供指向下半部分的指针。
a64[k32] // the k32'nd element of the array type: long long
&a64[k32] // address of the k32'nd element type: long long *
(long *) &a64[k32] // that address re-cast to long * type: long *
((long *) &a64[k32] + 1) // the second half of the k32'nd item type: long *
这不是完全可移植的。使用int32_t
和int64_t
代替long
和long long
会更安全。它还假定一个特定的字节序。