問(wèn)C語(yǔ)言中.和->的區(qū)別是什么?
在C語(yǔ)言中,.和->都是用于訪問(wèn)結(jié)構(gòu)體成員的運(yùn)算符。但是它們之間有著一些重要的區(qū)別。
1. 點(diǎn)運(yùn)算符(.)是用于訪問(wèn)結(jié)構(gòu)體變量中的成員,而箭頭運(yùn)算符(->)是用于訪問(wèn)結(jié)構(gòu)體指針?biāo)赶虻慕Y(jié)構(gòu)體變量中的成員。對(duì)于以下結(jié)構(gòu)體
``` {ame[20];t age;
要訪問(wèn)一個(gè)結(jié)構(gòu)體變量中的成員,可以使用點(diǎn)運(yùn)算符
``` p;
p.age = 20;
要訪問(wèn)一個(gè)結(jié)構(gòu)體指針?biāo)赶虻慕Y(jié)構(gòu)體變量中的成員,可以使用箭頭運(yùn)算符
``` p;alloc));
p->age = 20;
2. 點(diǎn)運(yùn)算符(.)可以用于訪問(wèn)結(jié)構(gòu)體的所有成員,而箭頭運(yùn)算符(->)只能用于訪問(wèn)結(jié)構(gòu)體指針?biāo)赶虻慕Y(jié)構(gòu)體變量中的成員。對(duì)于以下結(jié)構(gòu)體
``` {ame[20];t age;der;
要訪問(wèn)結(jié)構(gòu)體變量p中的所有成員,可以使用點(diǎn)運(yùn)算符
p.age = 20;der = 'M';
但是要訪問(wèn)結(jié)構(gòu)體指針變量p所指向的結(jié)構(gòu)體變量中的所有成員,必須先通過(guò)箭頭運(yùn)算符訪問(wèn)指針?biāo)赶虻慕Y(jié)構(gòu)體變量,然后再使用點(diǎn)運(yùn)算符訪問(wèn)該結(jié)構(gòu)體變量中的成員
p->age = 20;der = 'M';
3. 箭頭運(yùn)算符(->)是一種簡(jiǎn)寫方式,可以替代使用星號(hào)()和點(diǎn)運(yùn)算符(.)的方式訪問(wèn)結(jié)構(gòu)體指針?biāo)赶虻慕Y(jié)構(gòu)體變量中的成員。以下兩種方式是等價(jià)的
``` p;
(p).age = 20;
p->age = 20;
總之,點(diǎn)運(yùn)算符(.)和箭頭運(yùn)算符(->)都是用于訪問(wèn)結(jié)構(gòu)體成員的運(yùn)算符,但它們之間有著重要的區(qū)別。在使用時(shí)要根據(jù)具體情況選擇使用哪種運(yùn)算符。