这是一个指针,还是与arg mulitiplying int类型?

时间:2013-11-17 21:04:03

标签: c

我理解这是指针*(); 但*((类型*)类型);是什么令我困惑

我试图了解指针,但令我困惑。

int offset = *((int *)arg);

4 个答案:

答案 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 }。