Objective-C 中指针声明中的空格和括号
Whitespace and parentheses in pointer declarations in Objective-C
我从之前的问题中了解到,空格与 Objective-C 中的指针声明无关,例如:
float* powerPtr;
float * powerPtr;
float *powerPtr;
意思完全相同(除了文体方面的考虑...)但是
(float *)powerPtr;
(带括号)也一样吗?这些括号是否隐含 "mean" 星号应该以某种方式与 float 相关,而它应该在逻辑上与 powerPtr[= 相关21=]? (实际指针实际上是powerPtr,不是float,如果我没看错的话)
您的代码:
(float *)powerPtr;
不是 (Objective-)C 中的有效 声明。
这是一个 表达式,它将变量 powerPtr
中的值转换为 float *
.
类型
该转换的结果只是因为未使用而被丢弃,您的编译器可能会发出警告 - Xcode 8 发出 "Expression result unused"。
附录
根据您的评论,您显示的语法应该是方法声明的一部分,例如类似于:
- (void)doSomething:(float *)powerPtr;
这将在 @interface
中发生。此处的括号不用于分组 本身 而是用于分隔类型。至于你关心的:
Don't these parentheses implicitly "mean" that the asterisk should be in some way related to float
, when it should be instead more logically related to powerPtr
?
*
是类型的部分,float *
是"pointer to float"的类型规范。标识符 powerPtr
与整个类型规范相关联。
HTH
我从之前的问题中了解到,空格与 Objective-C 中的指针声明无关,例如:
float* powerPtr;
float * powerPtr;
float *powerPtr;
意思完全相同(除了文体方面的考虑...)但是
(float *)powerPtr;
(带括号)也一样吗?这些括号是否隐含 "mean" 星号应该以某种方式与 float 相关,而它应该在逻辑上与 powerPtr[= 相关21=]? (实际指针实际上是powerPtr,不是float,如果我没看错的话)
您的代码:
(float *)powerPtr;
不是 (Objective-)C 中的有效 声明。
这是一个 表达式,它将变量 powerPtr
中的值转换为 float *
.
该转换的结果只是因为未使用而被丢弃,您的编译器可能会发出警告 - Xcode 8 发出 "Expression result unused"。
附录
根据您的评论,您显示的语法应该是方法声明的一部分,例如类似于:
- (void)doSomething:(float *)powerPtr;
这将在 @interface
中发生。此处的括号不用于分组 本身 而是用于分隔类型。至于你关心的:
Don't these parentheses implicitly "mean" that the asterisk should be in some way related to
float
, when it should be instead more logically related topowerPtr
?
*
是类型的部分,float *
是"pointer to float"的类型规范。标识符 powerPtr
与整个类型规范相关联。
HTH