我将使用什么数据类型来存储数组中其他元素的地址。
如,数组的元素 0 具有元素 5 的地址。依此类推..
元素的地址具有与元素不同的数据类型。所以你的代码将不得不涉及一些类型转换。
用最少的演员来做到这一点:
T some_object;
void *array[20];
array[0] = &some_object;
array[5] = &array[0];
// ....
T *some_ptr = *(void **)array[5];
指针可以转换为int
(或者long
如果您正在执行 64 位并且您的 c 编译器定义long
为 64 位,则为 a)。然后你只需要获取你试图指向的元素的地址。
int test[10];
test[0] = (int)&test[5];