Objective-C中指针声明中的空格和括号

时间:2017-07-30 19:46:53

标签: objective-c pointers whitespace declaration parentheses

我从之前的问题中了解到,空格与Objective-C中的指针声明无关,例如:

float* powerPtr;

float * powerPtr;

float *powerPtr;

的意思完全相同(除了风格考虑因素......),但

(float *)powerPtr;

(带括号)也一样吗?不要隐含这些括号"意思是"星号应该以某种方式与 float 相关,而它应该与 powerPtr 在逻辑上更相关? (实际的指针实际上是powerPtr,而不是浮动,如果我是对的)

1 个答案:

答案 0 :(得分:0)

您的代码:

(float *)powerPtr;

不是(Objective-)C中的有效声明

这是一个表达式,它将变量powerPtr中的值转换为float *类型。

该转换的结果只是因为未使用而被丢弃,您的编译器可能会发出警告 - Xcode 8发出"表达式结果未使用"。

<强>附录

根据您的评论,您显示的语法应该是方法声明的一部分,例如类似的东西:

- (void)doSomething:(float *)powerPtr;

会在@interface中发生。此处的括号不用于分组本身,而是用于分隔类型。至于你关注:

  

不要隐含这些括号&#34;表示&#34;星号应该以某种方式与float相关,而它应该与powerPtr在逻辑上更相关?

* 类型的一部分,float *是&#34;指向float&#34;的指针的类型规范。标识符powerPtr与整个类型规范相关联。

HTH