是否将指针指针"*"放在Objective-C中的含义是什么?

Joh*_*ock 7 objective-c

这是一个令人尴尬的简单问题,当我深入研究目标C时,我无法找到答案:

在声明或赋值变量时,是否存在指针指针'*'的含义?

我看到过以不同方式定义的变量:

 NSString  *BLANK_SPACE = @" ";
 NSString const *BLANK_SPACE = @" ";
 NSString * const BLANK_SPACE = @" "; 
Run Code Online (Sandbox Code Playgroud)

现在我知道了CONST修饰符的含义,但我把它放在那里只是因为当我看到星号用空格分隔时,它通常在CONST修饰符之前.

有人可以解释在声明/分配变量时将*放在哪里的理由吗?有什么不同?

flu*_*ffy 9

const是一个后缀运算符,它引用左边的东西,而不是右边的东西.如果const先来,那么它适用于它之后的第一件事. const NSString *foo(以及NSString const *foo)意味着它是一个指向const NSString的非const指针 - 指针值可以重新分配,但指向的数据是不可变的.NSString * const foo意味着它是一个指向非const NSString的const指针 - 指向的数据可以改变,但指针引用的位置不能改变.

*线条和线条的其他部分之间的间距只是风格和清晰度的问题.

  • 另请参阅@ Caleb关于风格的答案,哪个*的位置更合适.这实际上源于C语言和该语言中的一些模糊性,但Caleb规定的风格确实清楚了*适用于什么.很多年前我经历过这首歌和C/C++的舞蹈,虽然它没有语言上的差异,但当你回顾旧的和被遗忘的代码时,它会让世界变得与众不同! (2认同)