C語(yǔ)言中.與->的區(qū)別詳細(xì)解析
->前是指針,而 . 前是結(jié)構(gòu)體變量
首先 a->b
的含義是 (*a).b
,所以他們是不同的,不過(guò)的確 ->
可以用 *
和 .
實(shí)現(xiàn),不需要單獨(dú)一個(gè)運(yùn)算符。 嗯,我這是說(shuō)現(xiàn)代的標(biāo)準(zhǔn)化的 C 語(yǔ)義上來(lái)說(shuō), ->
可以用 *
和 .
的組合實(shí)現(xiàn)。
早期的 C 有一段時(shí)間的語(yǔ)義和現(xiàn)代的 C 的語(yǔ)義不太一樣。
稍微有點(diǎn)匯編的基礎(chǔ)的同學(xué)可能知道,在機(jī)器碼和匯編的角度來(lái)看,不存在變量,不存在 struct 這種東西,只存在寄存器和一個(gè)叫做內(nèi)存的大數(shù)組。
結(jié)構(gòu)體變量用 . 來(lái)訪問(wèn)結(jié)構(gòu)體的成員如下:
#include<stdio.h> #include <malloc.h> struct stu{ int age; stu* next; }; int main(){ stu s1; s1.age =18; return 0; }
指向結(jié)構(gòu)體的指針用->來(lái)訪問(wèn)其指向的結(jié)構(gòu)體的成員如:
#include<stdio.h> #include <malloc.h> struct stu{ int age; stu* next; }; int main(){ stu *phead = (stu*)malloc(sizeof(stu));//測(cè)試代碼 phead->age=18; phead->next = NULL; stu* p = phead; return 0; }
簡(jiǎn)單點(diǎn)說(shuō)就是:
1、A->a表示A是指向結(jié)構(gòu)體的指針
2、A.a表示A是結(jié)構(gòu)體
3、A->a等效于(*A).a
4、A.B則A為對(duì)象或者結(jié)構(gòu)體;
5、A->B則A為指針,->是成員提取,A->B是提取A中的成員B,A只能是指向類、結(jié)構(gòu)、聯(lián)合的指針;
6、(*a).b 等價(jià)于 a->b。"."一般情況下讀作"的”; “->”一般讀作"指向的結(jié)構(gòu)體的"。也就是說(shuō)在結(jié)構(gòu)中,運(yùn)算符->是運(yùn)算符*和運(yùn)算符.的結(jié)合
7、“->”是指向結(jié)構(gòu)體成員運(yùn)算符。“.”是斷點(diǎn)符號(hào),不屬于運(yùn)算符。
8、“->”所指向的是結(jié)構(gòu)體或?qū)ο蟮氖椎刂贰?ldquo;.”所指向的是結(jié)構(gòu)體或?qū)ο蟆?/strong>
9、“->”的用處是使用一個(gè)指向以便訪問(wèn)結(jié)構(gòu)體或?qū)ο笃鋬?nèi)成員。“.”的用處是使用一個(gè)指向以便訪問(wèn)結(jié)構(gòu)體或?qū)ο蟆?/strong>
此外,(*a).b 等價(jià)于 a->b。
"."一般情況下讀作"的”。
“->”一般讀作"指向的結(jié)構(gòu)體的"。
總結(jié)
到此這篇關(guān)于C語(yǔ)言中.與->區(qū)別的文章就介紹到這了,更多相關(guān)C語(yǔ)言.與->的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言鏈表實(shí)現(xiàn)工資管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例
今天小編就為大家分享一篇關(guān)于利用rapidjson實(shí)現(xiàn)解析嵌套的json的方法示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04C語(yǔ)言詳細(xì)分析講解struct與union使用方法
最近開始自學(xué)C語(yǔ)言,從最基礎(chǔ)部分的開始學(xué)起。今天看書的時(shí)候注意到了struct和union似乎很像,除了名字不同,看起來(lái)幾乎沒有區(qū)別。<BR>既然C中定義了struct和union兩個(gè)關(guān)鍵字,那么它們肯定是有區(qū)別的,在查了一些資料之后我來(lái)總結(jié)一下他們的使用2022-04-04C語(yǔ)言代碼實(shí)現(xiàn)簡(jiǎn)易掃雷
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言代碼實(shí)現(xiàn)簡(jiǎn)易掃雷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01