想往C/C++游戲編程發(fā)展的你薯蝎,還沒(méi)學(xué)會(huì)C語(yǔ)言指針!

我最近跟很多在學(xué)C語(yǔ)言的年輕人聊天囊蓝,發(fā)現(xiàn)一個(gè)普通的痛點(diǎn)——C語(yǔ)言指針很難學(xué)邪媳!這時(shí)候我就會(huì)說(shuō):指針,傳說(shuō)中是C語(yǔ)言中的一個(gè)難點(diǎn)檬洞,且是難點(diǎn)中的難點(diǎn)狸膏。我會(huì)搜時(shí)間整理一個(gè)C語(yǔ)言指針的文章...

接著,今天終于實(shí)現(xiàn)了添怔!

本文在教材的基礎(chǔ)上湾戳,再詳細(xì)地談?wù)劇爸羔槨边@個(gè)東東,力爭(zhēng)讓大家能理解它广料。

一砾脑、指針的概念

關(guān)于指針的定義,很多教材一般給出“它是一個(gè)地址”艾杏,“存儲(chǔ)的是變量的地址”韧衣,“指向了一個(gè)值”等等描述。這樣描述其實(shí)也沒(méi)錯(cuò),但是就是不那么好理解畅铭。我覺(jué)得要理解指針萧求,無(wú)需給出什么定義,只需講透如下5個(gè)點(diǎn)顶瞒,我認(rèn)為基本就可以理解一個(gè)指針了夸政。

這5個(gè)點(diǎn)我總結(jié)如下:

1. 指針是一個(gè)普通的變量;

2. 既然指針是變量榴徐,那么肯定有自己的類(lèi)型守问;

3. 既然指針是變量,那么肯定有自己的值坑资;

4. 只不過(guò)指針的值跟一般變量的值不太一樣耗帕,指針的值是一個(gè)“地址”。

5. 指針指向的數(shù)據(jù)

關(guān)于怎么快速學(xué)C/C++游戲編程袱贮,有什么方法仿便,這個(gè)問(wèn)題,想必大家都已經(jīng)心中有數(shù)了攒巍,打算深入了解這個(gè)行業(yè)的朋友嗽仪,可以加下小編的C/C++游戲編程學(xué)習(xí)裙:453+243+280,不管你是小白還是大牛柒莉,小編我都?xì)g迎闻坚,不定期分享干貨,包括小編自己整理的一份2018最新的C/C++資料和0基礎(chǔ)入門(mén)教程兢孝,歡迎初學(xué)和進(jìn)階中的小伙伴窿凤。

每天晚上20:00我都會(huì)開(kāi)直播給大家分享C/C++游戲編程學(xué)習(xí)知識(shí)和路線(xiàn)方法,群里會(huì)不定期更新最新的教程和學(xué)習(xí)方法(進(jìn)群送2018C/C++游戲編程學(xué)習(xí)教程)跨蟹,大家都是學(xué)習(xí)C/C++的雳殊,或是轉(zhuǎn)行,或是大學(xué)生窗轩,還有工作中想提升自己能力的前端黨夯秃,如果你是正在學(xué)習(xí)C/C++的小伙伴可以加入學(xué)習(xí)。最后祝所有程序員都能夠走上人生巔峰品姓,讓代碼將夢(mèng)想照進(jìn)現(xiàn)實(shí)寝并,非常適合新手學(xué)習(xí)箫措,有不懂的問(wèn)題可以隨時(shí)問(wèn)我腹备,工作不忙的時(shí)候希望可以給大家解惑。

為了講透這5個(gè)點(diǎn)斤蔓,下面列舉一段代碼植酥,如下。

二、代碼來(lái)說(shuō)明

請(qǐng)欣賞以下代碼

運(yùn)行結(jié)果是:

三友驮、下面結(jié)合代碼我來(lái)談?wù)勀?個(gè)點(diǎn):

指針是一個(gè)普通的變量

本例中漂羊,有一個(gè)字符變量“c”,它的值是string[0]卸留,也就是“S”走越,這個(gè)大家都很好理解。

還有一個(gè)指針“pointer”耻瑟,注意旨指,它也是一個(gè)變量,和字符“c”一樣喳整,就是一個(gè)普通的變量而已谆构,它也有一個(gè)值,它的值是“&string[0]”框都,從運(yùn)行結(jié)果來(lái)看搬素,就是“0022FED9”,這是一個(gè)16進(jìn)制的數(shù)魏保。

2. 指針自己的類(lèi)型

本例中熬尺,字符變量“c”的類(lèi)型是“char”,數(shù)組string的類(lèi)型也是“char”谓罗,那么指針“pointer”的類(lèi)型也是“char”猪杭。不過(guò)與c和string的類(lèi)型char相比,pointer類(lèi)型的char卻有一點(diǎn)小區(qū)別妥衣。

變量c的類(lèi)型char說(shuō)明了c的值“S”是一個(gè)字符數(shù)據(jù)皂吮,數(shù)組string的類(lèi)型char說(shuō)明了其每一個(gè)數(shù)組元素也是字符數(shù)據(jù),但是指針pointer的類(lèi)型char是不是也說(shuō)明“0022FED9”是一個(gè)字符數(shù)據(jù)呢税手?傻子都知道當(dāng)然不是啦蜂筹!那么pointer的char類(lèi)型到底是在說(shuō)誰(shuí)呢?這就是指針的一個(gè)詭異的地方芦倒。等講完第5點(diǎn)指針指向的數(shù)據(jù)你就知道了艺挪。

3. 指針自己的值

上面已經(jīng)說(shuō)了,指針既然也是一個(gè)變量兵扬,那么肯定有自己的值麻裳,在本例中,指針自己的值就是“0022FED9”器钟,是一個(gè)16進(jìn)制的數(shù)津坑,這個(gè)值哪來(lái)的?是“&string[0]”賦予給指針的傲霸。

“0022FED9”這個(gè)東東也是很多教材中提到的“地址”疆瑰。很多人會(huì)想眉反,你告訴我“0022FED9”是一個(gè)值我還好理解,你告訴我它還是一個(gè)什么地址穆役,這就讓人暈菜了寸五,下面第4點(diǎn)就來(lái)說(shuō)說(shuō)這個(gè)“0022FED9”。

4. 指針的值

不知大家發(fā)現(xiàn)沒(méi)有耿币,在C程序中梳杏,如果定義了int,char等變量淹接,那么在代碼中很多地方都會(huì)用到這些變量的值秘狞。比如在本例中,定義了數(shù)組string蹈集,則接下來(lái)的代碼就用到了數(shù)組的元素烁试,也就是printf函數(shù)輸出來(lái)。如果定義了一個(gè)指針變量拢肆,可能大家很少看到在代碼中會(huì)用到指針的值减响,比如在本例中,大家就沒(méi)有看到用到“0022FED9”郭怪。

確實(shí)支示,相比一般類(lèi)型變量的值被頻繁使用而言,指針的值很少會(huì)被直接用到鄙才。注意颂鸿,這里說(shuō)的很少被直接用到,是指寫(xiě)代碼的人攒庵,也就是程序猿會(huì)很少用到嘴纺,但有一個(gè)角色用指針的值用的非常多,就是操作系統(tǒng)浓冒。

比如在本例中栽渴,輸出數(shù)組的每一個(gè)元素時(shí),我表面上是用的*(pointer + index)來(lái)輸出的稳懒,其實(shí)在背后闲擦,操作系統(tǒng)在執(zhí)行這個(gè)語(yǔ)句時(shí),都是利用指針的值“0022FED9”來(lái)找到數(shù)組的每一個(gè)元素的场梆,所以程序最終能正確輸出數(shù)組的每一個(gè)字符墅冷。

上面也說(shuō)了,“0022FED9”是被系統(tǒng)用的最多或油,為啥被系統(tǒng)用的最多呢寞忿?因?yàn)椤?022FED9”是一個(gè)地址,是string數(shù)組的第一個(gè)元素“S”的地址装哆。說(shuō)的再通俗一點(diǎn)罐脊,字符“S”放在一個(gè)大小為1BYTE的內(nèi)存塊里定嗓,這個(gè)內(nèi)存塊的地址就是“0022FED9”蜕琴。

5. 指針指向的數(shù)據(jù)

在第4點(diǎn)說(shuō)到萍桌,字符“S”放在一個(gè)大小為1BYTE的內(nèi)存塊里,這個(gè)內(nèi)存塊的地址就是“0022FED9”凌简,那么上炎,我們就說(shuō),指針“pointer”的值是“0022FED9”雏搂,在地址為“0022FED9”的地方放了一個(gè)字符“S”藕施,這個(gè)“S”就是指針“pointer”指向的數(shù)據(jù),且通過(guò)“*pointer”這種寫(xiě)法來(lái)獲取“S”凸郑,從某種意義上來(lái)說(shuō):

pointer 等于 0022FED9裳食;

*pointer等于“S”,加上*號(hào)芙沥,就是直搗黃龍诲祸,拿到“S”。

此時(shí)我們可以說(shuō)說(shuō)第2點(diǎn)中提到的指針的類(lèi)型是來(lái)修飾誰(shuí)的問(wèn)題了而昨。在本例中救氯,pointer的類(lèi)型char顯然不是來(lái)修飾“0022FED9”的,它是來(lái)告訴操作系統(tǒng)歌憨,我pointer認(rèn)為“0022FED9”這個(gè)地方存放的是字符着憨,是字符,是字符务嫡,且占1個(gè)BYTE的大小甲抖。

如果pointer的類(lèi)型改為int,我pointer就認(rèn)為“0022FED9”這個(gè)地方存放的是整數(shù)心铃,是整數(shù)惧眠,是整數(shù)字符,且占4個(gè)BYTE的大小于个。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氛魁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子厅篓,更是在濱河造成了極大的恐慌秀存,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽氮,死亡現(xiàn)場(chǎng)離奇詭異或链,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)档押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)澳盐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祈纯,“玉大人,你說(shuō)我怎么就攤上這事叼耙⊥罂” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵筛婉,是天一觀(guān)的道長(zhǎng)簇爆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)爽撒,這世上最難降的妖魔是什么入蛆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮硕勿,結(jié)果婚禮上哨毁,老公的妹妹穿的比我還像新娘。我一直安慰自己源武,他們只是感情好扼褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著软能,像睡著了一般迎捺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上查排,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天凳枝,我揣著相機(jī)與錄音,去河邊找鬼跋核。 笑死岖瑰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砂代。 我是一名探鬼主播蹋订,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刻伊!你這毒婦竟也來(lái)了露戒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捶箱,失蹤者是張志新(化名)和其女友劉穎智什,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體丁屎,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荠锭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晨川。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片证九。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡删豺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愧怜,到底是詐尸還是另有隱情呀页,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布叫搁,位于F島的核電站赔桌,受9級(jí)特大地震影響供炎,放射性物質(zhì)發(fā)生泄漏渴逻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一音诫、第九天 我趴在偏房一處隱蔽的房頂上張望惨奕。 院中可真熱鬧,春花似錦竭钝、人聲如沸梨撞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卧波。三九已至,卻和暖如春庇茫,著一層夾襖步出監(jiān)牢的瞬間港粱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工旦签, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留查坪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓宁炫,卻偏偏與公主長(zhǎng)得像偿曙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羔巢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355