目标C中的指针声明

时间:2010-12-21 18:21:05

标签: objective-c pointers

在Obj-C上阅读各种文本或代码示例时,我看到如下指针声明:

NSString *myStringPtr

但有时候我会看到,

NSString * myStringPtr

名称和*之间有空格。

这些声明之间是否存在差异,或者它们只是指向NSString类型对象的指针,还是我错过了什么?

一般来说*和名称之间的空格是必要的吗?

我甚至见过     NSString * myStringPtr

这与上述陈述有何不同?

我意识到(NSString *)方法返回类型或参数意味着该方法返回(或传递)指向NSString对象的指针。

1 个答案:

答案 0 :(得分:1)

不,星号可以附加到名称或类型,或者介于两者之间(空格作为填充)。没什么区别。但是,Objective-C最常使用样式

NSString *myStr;

而不是

NSString * myStr;

NSString* myStr;

如果您将多个变量声明为一行,则指针的放置会产生影响。例如,这个

int* a, b;

在功能上与此相同:

int *a;
int  b;    /* Note: This is not a pointer! */

(注意:这也适用于C,因为这在技术上是一个C语法问题,而不是Objective-C特有的。)