Objective c 星号有时在变量类型上,有时在变量名称上。为什么?
例如,在Objective-C中,我看到:Objective c 星号有时在变量类型上,有时在变量名称上。为什么?,objective-c,pointers,initialization,operators,Objective C,Pointers,Initialization,Operators,例如,在Objective-C中,我看到: UIPickerView *tweetPicker 及 星号是什么意思(我知道,第一部分是重复…),为什么它会出现在不同上下文中声明的不同部分?星号表示变量是指针。在objective-C中,所有对象都通过指针表示 就它的位置而言,这是一种风格。我的个人风格实际上是在星号周围加空格 UIPickerView * tweetPicker 在这三种情况下,它们的意思相同,但风格不同 编辑:间距无关紧要,但位置在处理关键字的情况下会起作用,例如const
UIPickerView *tweetPicker
及
星号是什么意思(我知道,第一部分是重复…),为什么它会出现在不同上下文中声明的不同部分?星号表示变量是指针。在objective-C中,所有对象都通过指针表示 就它的位置而言,这是一种风格。我的个人风格实际上是在星号周围加空格
UIPickerView * tweetPicker
在这三种情况下,它们的意思相同,但风格不同
编辑:间距无关紧要,但位置在处理关键字的情况下会起作用,例如
const
引用常量指针或指向常量值的指针。但你的问题与间距有关,这无关紧要。在你所展示的确切案例中,没有区别。有些人喜欢认为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
是正则整数,在第二种情况下,它们是指针<代码>a在这两种情况下都是指针
从我的角度来看,“类型”的概念在C语言中是如此薄弱(与类型转换等行为有关),以至于将该概念进一步扩展到指针变量是疯狂的-尤其是在与
void*
或id
之间的自动和静默转换中。真的吗?位置不重要吗?让我看看。编辑:行得通,那么为什么“Headfirst iPhone开发”会指示我按照我发布的方式来做呢?@Moshe,这个职位在某些情况下确实很重要。我会写一个答案。你说的“间隔”和“位置”是什么意思?这不一样吗?我有一本最早的IPhone开发书,我不记得它每次都告诉你要用这种或那种方式来做。我记得他们实际上使用了你在上面发布的两种风格,苹果也使用了我使用的风格。它们都是合法的,不重要。位置通常与顺序有关(你是在第一个位置还是第二个位置),间距通常与某物前后出现多少空白有关。C和Objective-C通常不关心间距,除非需要区分令牌之间的差异。谢谢。请原谅我的无知,但是什么是“标量”?对不起,“标量”的用法不好-C规范定义了这一点。我会编辑。我只是说我更喜欢带有变量名的*
,而不是类型。由于变量定义如何工作的规则,以另一种方式执行会导致代码混乱(特别是对于新手)。
int* a, b, c;
int *a, *b, *c;