2017-07-30 61 views
0

我从前面的问题理解指针声明括号空白是无关紧要的,在Objective-C的指针声明,如:空白和Objective-C中

float* powerPtr; 

float * powerPtr; 

float *powerPtr; 

不意味着完全一样的(除了风格上的考虑。 ..)但是是

(float *)powerPtr; 

(带括号)也是一样吗?不要这些括号隐含地“意味着”星号应该与float相关,当它应该更合乎逻辑地与powerPtr相关? (实际指针实际上是powerPtr,不浮动,如果我是正确的)

回答

0

您的代码:

(float *)powerPtr; 

不是有效声明在(Objective-)C。

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

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

附录

从你的评论显示语法本来是一个方法声明,如部分例如:

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

这将发生在@interface。这里的圆括号不用于分组本身,而是用于分隔类型。至于你的关注:

不要这些括号暗示“意思”的星号应在有关float某种程度上,当它应该更多,而不是逻辑关系powerPtr

*的类型为一部分,float *为“指针浮动”的类型设定。标识符powerPtr与整个类型规范相关联。

HTH

+0

是不是在方法定义中使用? –

+0

- (BOOL)isEqualToString:(NSString *)other; –

+0

请参阅附录,HTH – CRD