我理解这是指针*(); 但*((类型*)类型);是什么令我困惑
我试图了解指针,但令我困惑。
int offset = *((int *)arg);
答案 0 :(得分:2)
让我们打破这个:
(int *)arg;
这需要arg
并将其转换为int *
。这个表达式的结果当然是int *
。
*((int *)arg);
我们现在只是解除引用我们刚刚提出的int *
- 结果是指针指向的整数。
int offset = *((int *)arg);
我们将该整数分配给offeset。
此处不涉及乘法。
答案 1 :(得分:1)
此(int *)arg
采用任何类型的arg
并假装它是int *
此*((int *)arg)
获取上述指针并对其进行推理,返回int
答案 2 :(得分:0)
您正在将arg
强制转换为指向int的指针,然后将其取消引用。
这样想:
void* arg;
int* ptr = (int*) arg;
int offset = *ptr;
答案 3 :(得分:0)
这是一个演员,后面是一个解除引用。基本上,你告诉编译器,“相信我。我知道arg
指向int
,所以请阅读它指向的int
,并将其放入offset
}。