我有以下C宏示例:
#include <stdlib.h>
#define ARRAY_AT(array , i, elem_size) \
*((void **)((((void *)array) + i * elem_size)))
int main(int argc, char **argv) {
long array[5] ={1,2,3,4,5};
long a = ARRAY_AT(array , 2, sizeof(long)); // a = 3
return 0;
}
我不太了解*(void **)部分,它如何工作?