C語言C++編程新手基礎(chǔ)入門學(xué)習(xí)中 ”.“ 與 ”->“ 有什么區(qū)別

這些是C/C++能做的

服務(wù)器開發(fā)工程師居扒、人工智能概漱、云計(jì)算工程師、信息安全(黑客反黑客)喜喂、大數(shù)據(jù) 瓤摧、數(shù)據(jù)平臺(tái)、嵌入式工程師玉吁、流媒體服務(wù)器照弥、數(shù)據(jù)控解、圖像處理进副、音頻視頻開發(fā)工程師这揣、游戲服務(wù)器、分布式系統(tǒng)影斑、游戲輔助等

C語言是面向過程的曾沈,而C++是面向?qū)ο蟮?/div>

首先 a->b 的含義是 (*a).b,所以他們是不同的鸥昏,不過的確->可以用 * 和 . 實(shí)現(xiàn)塞俱,不需要單獨(dú)一個(gè)運(yùn)算符。

從現(xiàn)代的標(biāo)準(zhǔn)化的C語義上來說吏垮,->可以用*和.的組合實(shí)現(xiàn)障涯。但是,早期的C有一段時(shí)間的語義和現(xiàn)代的C的語義不太一樣膳汪。

稍微有點(diǎn)匯編的基礎(chǔ)的同學(xué)可能知道唯蝶,在機(jī)器碼和匯編的角度來看,不存在變量遗嗽,不存在struct這種東西粘我,只存在寄存器和一個(gè)叫做內(nèi)存的大數(shù)組。所以變量,是C對(duì)內(nèi)存地址的一個(gè)抽象征字,它代表了一個(gè)位置都弹。

舉個(gè)栗子,C里面我們寫 a = b 其實(shí)在匯編的角度來看更像是 *A = *B 其中 A 和 B 各是兩個(gè)內(nèi)存地址匙姜,是指針畅厢。

好,以上是基本背景氮昧】蚨牛基于這個(gè)背景我們討論一下struct是什么,以及struct的成員是什么袖肥。

假設(shè)我們有:

從現(xiàn)代語義上講 p 就是一個(gè)結(jié)構(gòu)體對(duì)象咪辱,x 和 y 各是其成員。

從匯編的語義上講椎组,p 是一個(gè)不完整的地址梧乘,或者說,半個(gè)地址庐杨,再或者說,一個(gè)指向的東西是虛構(gòu)出來的地址夹供。而 x 和 y 各是在 Point 結(jié)構(gòu)中的地址偏移量灵份。也就是說,必須有 p和x 或者 p和y 同時(shí)出現(xiàn)哮洽,才形成一個(gè)完整的地址填渠,單獨(dú)的一個(gè) p 沒有意義。

早期的C就是在這樣的模型上建立的鸟辅。所以對(duì)早期的C而言氛什,*pp 沒有意義,你取得了一個(gè)struct匪凉,而這個(gè)struct不能塞在任何一個(gè)寄存器里枪眉,編譯器和CPU都無法表達(dá)這個(gè)東西。這時(shí)候只有 p.x 和 p.y 有意義再层,它們有真實(shí)的地址贸铜。

早期的C就是這樣一個(gè)看起來怪異的語義,而它更貼近機(jī)器的表達(dá)聂受。

所以對(duì)早期的C而言蒿秦,以下的代碼是對(duì)的:

而以下代碼是錯(cuò)的:


因?yàn)樽鳛檫@個(gè)賦值的目標(biāo)地址表達(dá)式的一部分,*pp蛋济,這個(gè)中間結(jié)果沒法直譯到機(jī)器碼棍鳖。所以對(duì)早期的C而言,對(duì)pp解引用的操作碗旅,必須和取成員的偏移的操作渡处,這兩者緊密結(jié)合起來變成一個(gè)單獨(dú)的操作镜悉,其結(jié)果才有意義。

所以早期的C就發(fā)明了->骂蓖,表示這兩個(gè)操作緊密結(jié)合的操作积瞒。于是才能寫:pp->x = 1;嗯登下,這就是它存在的歷史原因茫孔。而這個(gè)歷史原因現(xiàn)在已經(jīng)不重要了,現(xiàn)代的符合標(biāo)準(zhǔn)的C編譯器都知道 (*pp).x 和 pp->x 是等價(jià)的了被芳。

說句題外話缰贝,C++里面還發(fā)明了 .* 和 ->* 這兩個(gè)運(yùn)算符(注意 ->* 不是單獨(dú)的 -> 和 * 并排放的意思),關(guān)于為什么要發(fā)明這兩個(gè)運(yùn)算符畔濒,而不能直接說 a ->* b 的意思就是 a ->(*b)剩晴,請(qǐng)讀者們自己動(dòng)腦想想,并在評(píng)論區(qū)留言侵状。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赞弥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子趣兄,更是在濱河造成了極大的恐慌绽左,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艇潭,死亡現(xiàn)場(chǎng)離奇詭異拼窥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蹋凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門鲁纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳍寂,你說我怎么就攤上這事改含。” “怎么了迄汛?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵候味,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我隔心,道長(zhǎng)白群,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任硬霍,我火速辦了婚禮帜慢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己粱玲,他們只是感情好躬柬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抽减,像睡著了一般允青。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卵沉,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天颠锉,我揣著相機(jī)與錄音,去河邊找鬼史汗。 笑死琼掠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的停撞。 我是一名探鬼主播瓷蛙,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼戈毒!你這毒婦竟也來了艰猬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤埋市,失蹤者是張志新(化名)和其女友劉穎冠桃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恐疲,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年套么,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了培己。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胚泌,死狀恐怖省咨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玷室,我是刑警寧澤零蓉,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站穷缤,受9級(jí)特大地震影響敌蜂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜津肛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一章喉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦秸脱、人聲如沸落包。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐蝇。三九已至,卻和暖如春巷查,著一層夾襖步出監(jiān)牢的瞬間有序,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工吮便, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笔呀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓髓需,卻偏偏與公主長(zhǎng)得像许师,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子僚匆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 第1章 第一個(gè)C程序第2章 C語言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計(jì)第5章 條件結(jié)構(gòu)程序設(shè)計(jì)第6章...
    小獅子365閱讀 10,675評(píng)論 3 71
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型咧擂。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一逞盆。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,451評(píng)論 3 44
  • 芍藥 銀蓮花 石竹科:石竹&麥仙翁
    JR賈閱讀 168評(píng)論 0 1
  • 2018.1.6???感恩宇宙恩典松申,和寶貝女兒見面了云芦,20天沒見了!我的甜心?又長(zhǎng)高了贸桶,看著乖乖滴小臉舅逸,我的眼一刻...
    洋姐書香閣閱讀 358評(píng)論 0 0
  • 文/林桔 01 在跳下去之前琉历,王鷗抬著頭定定地看著明道,忍著隨時(shí)奪眶而出的眼淚水醋,一遍一遍地說:“你抱緊我旗笔,不要松手...
    林桔閱讀 1,068評(píng)論 7 13