在Objective-C中,我见过,例如:
UIPickerView *tweetPicker
和
UIPickerView* tweetPicker
星号是什么意思(我知道,第一部分是骗局......)为什么它会在不同背景下的声明的不同部分进行?
答案 0 :(得分:14)
在您展示的确切情况下,没有区别。有些人喜欢将tweetPicker
视为UIPickerView *
类型,即指向UIPickerView
的指针。这些人通常把它写成
UIPickerView* tweetPicker;
其他人更喜欢将其视为*tweetPicker
是UIPickerView
,也就是说,取消引用指针会产生UIPickerView
。那些人通常写道:
UIPickerView *tweetPicker;
我更喜欢后者,因为C(和Objective-C因此)语法更好地支持它。例如,以下变量声明:
int* a, b, c;
int *a, *b, *c;
乍一看,新手C(或Objective-C)程序员可能会说“那些是相同的”,但他们不是。在第一种情况下,b
和c
是常规整数,在第二种情况下,它们是指针。 <{1}}是两种情况下的指针。
从我的角度来看,无论如何,“类型”的概念在C中是如此弱(对于类型转换的行为等),将该概念进一步扩展到指针变量是疯狂的 - 特别是对于自动&amp;来自a
或void *
的无声转换。
答案 1 :(得分:1)
星号表示变量是指针。在objective-C中,所有对象都通过指针表示。
就放置的地方而言,这是一种风格的东西。我的个人风格实际上是星号周围的空格。
UIPickerView * tweetPicker
在所有三种情况下,它们的意思相同,但风格各异。
编辑:间距无关紧要,但在处理关键字的极端情况下,位置会起作用,例如if const
是指常量指针还是指向常量值的指针。但你的问题与间距有关,这无关紧要。