冰楓論壇
標題:
[C++] 點(.)與鍵頭(->)的使用規則
[打印本頁]
作者:
whitefox
時間:
2023-6-14 17:19
標題:
[C++] 點(.)與鍵頭(->)的使用規則
簡而言之,當變數是結構體(結構/類別)時,引用成員使用點(.);當變數是指向結構體的『指標』時,引用成員使用鍵頭(->)
a->b;
複製代碼
可以視為
(*a).b;
複製代碼
也就是『->』是『*』+『.』的語法糖(Syntactic Sugar)
用以下兩個例子比對使用『->』與『.』的差異
『.』:
struct stu{
int age;
stu* next;
};
int main(){
stu s1;
s1.age = 18;
return 0;
}
複製代碼
『->』:
struct stu{
int age;
stu* next;
};
int main(){
stu* phead = (stu*)malloc(sizeof(stu));
phead->age = 18;
phead->next = NULL;
stu* p = phead;
return 0;
}
複製代碼
可以看出兩個例子,本質上是一樣的
總結來說
A->a表示A是指向結構體的指標
A.a表示A是結構體
A->a等效於(*A).a
A.B則A為物件或者結構體;
A->B則A為指標, ->是成員提取, A->B是提取A中的成員B, A只能是指向類別、結構、聯合的指標
(*a).b 等同於 a->b
"."一般情況下讀作"的"; "->"一般讀作"指向的結構體的", 也就是說在結構中, 運算符號->是運算符號*和運算符號.的結合
"->"是指向結構體成員運算符號, "."是斷點符號, 不屬於運算符號
"->"所指向的是結構體或物件的首個位址, "."所指向的是結構體或物件
"->"的用處是使用一個指向訪問結構體或物件其內部成員, "."的用處是使用一個指向訪問結構體或物件
歡迎光臨 冰楓論壇 (https://bingfong.com/)
Powered by 冰楓