第四十六章 指針(一)
「只有上帝知道那段代碼是什么意思,因為沒有注釋,半個月后程序員自己也不知道當(dāng)初寫的代碼是用來干嘛的了。」
六叔叔笑了笑,然后接著說道:「這句話還在我剛學(xué)習(xí)編程的時候你老爹就給我說過,當(dāng)時我不以為然,甚至有些嗤之以鼻。
我覺得只有那些凡人才會犯這種低級錯誤,不曾想在我度過國慶節(jié)再回去工作爹時候,已經(jīng)全然忘記節(jié)前寫的代碼是用來干什么的了。
所以關(guān)于這一點,我還是很贊同你老爹的說法的,雖然到現(xiàn)在我都不怎么喜歡寫注釋?!?p> 果然,有其父必有其子,小弦子在說「你們這些凡人」的時候無論語氣口吻,還是神情舉止都和六叔叔是一模一樣。那種不把所有人放在眼里,睥睨天下的氣勢讓人真的恨不得上前就是兩鞋底拍臉上。
既然連六叔叔都這么說了,那以后還是寫些注釋吧!
剩下的一些時間,老爹讓我和小弦子自己安排,我們休息了一會兒,就開始著手寫新的推箱子程序。
按照老爹的設(shè)計概要文檔,因為思路清晰,實施起來效率的確是提高了不少。在小弦子離開的時候,除去和文件讀寫相關(guān)的內(nèi)容,幾乎已經(jīng)完成了百分之八十。
送走了小弦子一家之后,我抱著薯片坐在沙發(fā)上陪爺爺奶奶看電視,老媽則是在一旁整理她今天和小鹿阿姨逛商場的戰(zhàn)利品,分別派送到我們手上。
爺爺奶奶和我都有,當(dāng)然老媽也不可能忘了她自己,唯獨只有老爹慘兮兮的,什么都沒有。
「唉,這是個什么世道哦!」
老爹幽怨地看了老媽一眼,搖頭嘆息道。
「前年不是給你買了5套格子衫配休閑褲噠嘛?而且你辛苦賺錢的目的不就是讓我們過得更好么?」
老媽捂著嘴笑道。
「好了好了,這是你半個月前收藏的無線耳機,今天去商場逛的時候看到了,幫你買回來了。」
老媽從從她手提包里拿出一個精致的小盒子,然后遞給了老爹。
「謝謝媳婦兒!」
老爹看到盒子,原本幽怨地神情一掃而光,滿面歡喜地從老媽手上接過盒子,而且居然還當(dāng)著大家的面親了老媽的臉!
簡直是太過分了,全然沒有顧及到我一個小孩子還在呢!
老媽的臉居然一下子紅了,然后提著袋子落荒而逃,躲進了他們的臥室。
吃了晚飯后,按照咱們家多年的傳統(tǒng),又到了游戲時間,于是我和老爹邀請六叔叔一家開五黑。
六叔叔毫無意外地依舊選了他那近萬把的寒冰射手,當(dāng)然,為了降低游戲難度,六叔叔和老爹都是用的小號。不然匹配到的對手根本就不是我們?nèi)齻€大人和兩個小孩兒能夠匹敵的。
既然六叔叔玩兒ADC,那么小鹿阿姨自然就是輔助咯。
如果六叔叔不跟我們一起玩兒,小弦子其實也喜歡玩兒ADC,但是現(xiàn)在只能遠走上路,玩兒起了小提莫。
「老爹老爹,一會兒你可要多幫幫我!我怕打不贏對面的疾風(fēng)劍豪。」
「沒事,你德瑪對戰(zhàn)劍豪還是很好打的,等到老爹德邦三級了就來幫你抓?!?p> 其實老爹年輕的時候除了打野,其他位置都可以打,但是后來為了將就我們,只能去打野了。
快樂的時光總過得很快,沒玩兒幾把就到了該睡覺的時間了。雖然基本上都是輸,但還是很開心。
第二天,小弦子如約而至。
「孩子們,今天我們就要學(xué)習(xí)C語言最精髓的部分——指針。這個地方可以說算得上一道分水嶺,一旦越過去,C語言功底將會發(fā)生質(zhì)的飛躍?!?p> 「那要是越不過去呢?」
「那就永遠停留在菜鳥級別!有很多人哪怕在參加工作了以后,都沒有將指針的用法融匯貫通。所以啊,你們要打起精神來,好好聽這部分的內(nèi)容。
好了,內(nèi)容正式開始!」
聞言后,我和小弦子都挺直了腰桿,畢竟這還是老爹第一次如此鄭重其事地強調(diào)。
「假設(shè)你們倆在學(xué)校闖禍了,老師通知我到學(xué)校來,但是因為老爹不知道你們的教室在哪兒,于是我就問了你們學(xué)校的老師,被告知你們在五樓。
于是老爹來到五樓,通過教室門口的『四年級二班』標(biāo)識牌找到了你們教室。但是不巧的是,你們倆已經(jīng)被班主任叫到了辦公室。正在上課的任課老師擔(dān)心我找不到,告訴我辦公室在502。
最終我通過502找到了辦公室,看到了正在接收批評教育的你們。
在這個案例中,我們要找到教室或者辦公室只需要知道標(biāo)識牌或者編號中的一個,就能夠找到那個房間,這個沒有錯吧?」
「嗯……」
「其實啊,在C語言中,一個房間就相當(dāng)于我們內(nèi)存的一個字節(jié),如果我們要對內(nèi)存的某個字節(jié)進行訪問,同樣也可以如同案例中的方式,要么通過標(biāo)識牌,要么通過編號。
而內(nèi)存字節(jié)的標(biāo)識牌就是我們的變量名,編號,自然就是我們的內(nèi)存地址了。
在C語言中,我們把一個變量的地址成為該變量的指針,換而言之,指針代表的就是一個地址,這個地址指向內(nèi)存中的某個變量?!?p> 「指針原來就是地址啊,也沒有什么奇特的呀,為什么老爹之前一提到指針就是一副諱莫如深的樣子?」
聽到老爹的講述后,我并沒有意識到指針有什么特別之處。
「指針的精妙,只能用只可意會不可言傳幾個字來形容,這個需要你們在實際使用到的時候才能體會到??茨銈円桓迸d致缺缺的樣子,那我現(xiàn)在就讓你們開開眼界,讓你們體會到指針強大之處。
請聽題:請編寫一個swap函數(shù),實現(xiàn)對兩個變量的值進行交換。也就是說,我有兩個變量:
int a = 3;
int b = 4;
在調(diào)用了swap之后,a的值變成了4,b的值變成了3?!?p> 「這個有什么難的嘛,這樣寫不就好了么:
void swap(int x, int y)
{
a = a + b;
b = a - b;
a = a - b;
}
swap(a,b);
不就完了么?」
我不以為意道。
「是么?真的是這樣么?」
老爹臉上浮現(xiàn)出一抹意味深長的笑容,這讓我心中一凸,因為上次看到這種笑容還是在學(xué)習(xí)break關(guān)鍵字時。
那時我無比膨脹地認(rèn)為老爹所說的break結(jié)束離它最近的for指的代碼距離上的遠近,然而錯的一塌糊涂!