繁体   English   中英

*(int *)a是什么意思?

[英]What does expression *(int*)a mean?

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

我不理解表达式*(int*)a吗?

void *指针是一个通用指针,它可以指向任何内容,但是由于编译器并不确切知道其指向的内容,因此必须告诉编译器其确切指向的内容。 这种“讲述”是强制转换的作用: (int *) a告诉编译器a实际上是指向int

然后,该代码仅使用解引用运算符(unary * )来获取a所指向的值,并在常规减法表达式中使用该值。

(int*)a

a强制转换为int* 简单地取消引用a void ,因为*a类型为void ,这是不允许的。

此外,这在某种程度上是不安全的,因为将a作为const传递,并且调用者希望*a不被更改。 好的, a确实没有改变,但是这样的显式转换应该很少。

附加的解引用“获取” a指向的值。 最后,如果两个数据相等,则compare返回0

(int*)a将void指针转换为int类型的指针。 *(int*)a采用指针指向的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM