【发布时间】:2017-03-26 00:17:08
【问题描述】:
要将变量 a[1] 转换为指针,然后在 C 中取消引用它,这两种格式似乎都有效。例如,
- *( (无符号整数 *) a[1])
- (*(unsigned int *) a[1])
它们都正确吗?它们之间有什么区别吗?
【问题讨论】:
-
它们本身是等价的,但在实际代码中你必须警惕Operator Precedence。第二个选项(在我看来)会更好用,因为它在自己的表达式中进行取消引用,因此结果不受运算符优先级的影响,就像
*((someStruct*)x)->ptr这样的代码。 -
为什么不直接
*(unsigned int *)a[1]?
标签: c dereference