在Objective-C,我所看到的,例如:星號有時在變量類型上,有時在變量名上。爲什麼?
UIPickerView *tweetPicker
和
UIPickerView* tweetPicker
什麼星號意味着(我知道,第一部分是欺騙...)和爲什麼在不同情況下的聲明的不同部分呢?
在Objective-C,我所看到的,例如:星號有時在變量類型上,有時在變量名上。爲什麼?
UIPickerView *tweetPicker
和
UIPickerView* tweetPicker
什麼星號意味着(我知道,第一部分是欺騙...)和爲什麼在不同情況下的聲明的不同部分呢?
在確切的情況下,你顯示,沒有區別。有些人喜歡認爲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
你得到。
星號表示該變量是一個指針。在Objective-C中,所有對象都通過指針表示。
就放在哪裏,這是一種風格的東西。我的個人風格實際上是在星號附近的空格。
UIPickerView * tweetPicker
在所有三種情況下,它們意味着相同的事物,但具有不同的風格。
編輯:間距無關緊要,但位置在處理關鍵字的轉角情況下會發生,例如const
引用常量指針或指向常量值的指針。但是你的問題與間距有關,這並不重要。
謝謝。請原諒無知,但什麼是「標量」? – Moshe 2010-03-16 05:53:23
糟糕的使用'標量',抱歉 - C規範定義了這一點。我會編輯。 – 2010-03-16 05:57:57
我只是說我喜歡帶變量名稱而不是類型的'*'。由於有關變量定義如何工作的規則,以另一種方式進行操作可能會導致代碼混淆(尤其對於新手而言)。 – 2010-03-16 06:01:01