假設我有後續代碼與結構指針一起使用的 - >運算符是否也可用於聯合指針?
union test
{
int salary[10];
short ages[20];
} *ptr;
那我能不能給點工資爲ptr->salary[1]
的第二個元素?或者我使用ptr.salary[1]
?
假設我有後續代碼與結構指針一起使用的 - >運算符是否也可用於聯合指針?
union test
{
int salary[10];
short ages[20];
} *ptr;
那我能不能給點工資爲ptr->salary[1]
的第二個元素?或者我使用ptr.salary[1]
?
使用ptr.salary[1]
不正確,因爲ptr
仍然是指向它所指向的類型的獨立指針。
正確的方法是:
ptr->salary[1]
或
(*ptr).salary[1]
在第二種情況下,不要忘了()
爲*
比.
具有較低的優先級。
Daniel說'(* ptr).salary [1]' – 2013-04-22 15:30:45
這只是這個問題的部分答案。你是正確的,'ptr.salary [1]'是不正確的,但是你不會說''>'運算符對於指向工會的指針以及指向結構體的指針是有效的。 – 2013-04-22 15:31:56
@KeithThompson固定 – Alex 2013-04-22 15:34:29
是的,'ptr-> salary [1]'或'(* ptr).salary [1]'是正確的。不,'ptr.salary [1]'是不正確的,那就是要求一個既不是結構也不是結合體(即指針)的成員。 – 2013-04-22 15:22:21
我從來不知道結構或數組的'(* ptr).salary [1]'語法!!你能不能告訴我爲什麼這是可行的? '* ptr'應該不是'指針'的值嗎? – 2013-04-22 15:25:06
@TSingh:正是。並且該位置的值的類型是union/struct,因此您可以使用它。 – FatalError 2013-04-22 15:26:18