首頁 現(xiàn)實

程序媛養(yǎng)成計劃

第四十一章 逆天改命的秘密

程序媛養(yǎng)成計劃 任煦之秋 2063 2020-05-14 21:15:15

  爺爺擺了擺手,然后就和奶奶坐在餐桌前,就著小籠包子和稀飯把早餐給對付了。

  昨天我發(fā)燒暈過去后,老爹抱著我就往醫(yī)院跑,然后他和老媽就一直守在病床邊,寸步不離。老媽守到半夜就靠著老爹淺睡了一會兒,老爹繃緊了神經(jīng),硬是一宿沒有合眼。

  這個時候放松下來,再加上吃飽喝足,當然是倦意來襲。要是我,多半早就倒在床上呼呼大睡了,可是這兩口子非要堅持沖個澡再休息。

  老爹明明已經(jīng)困得不行了,但還是沒有忘了女士優(yōu)先的紳士風度。女人就是麻煩,老媽足足洗了半個多小時,老爹在沙發(fā)上坐著等都睡著了。

  洗完澡,老爹老媽就回他們臥室休息去了。我感冒初愈,今天自然是不會有新的課程,閑來無事之際,我把老爹昨天講的和函數(shù)相關的知識回顧了一遍,進而將推箱子的代碼打開,想著應該如何將灰太狼移動這部分用函數(shù)實現(xiàn)。

  可是想了半天都無從下手,按捺住跑到老爹老媽臥室將老爹喊醒的沖動,我只好聯(lián)系小弦子,看看他能不能有什么好的辦法。

  雖然我們倆在基本理論知識上面學得還不錯,但畢竟還缺少這方面的經(jīng)驗,一陣討論下來,也沒有討論出個結果。

  「連比我聰明的小弦子都不知道該怎么辦,那我不會也正常了?!?p>  我坦然地用這個理由說服了自己。

  既然沒有事情可以做了,不如玩兒兩把游戲放松放松。和小弦子開黑玩兒兩局,我也漸漸感到倦意來襲……

  新學期剛剛開始,學習的內容并不多。不知道是不是因為和老爹學習編程的緣故,我覺得書上的內容超級簡單易懂,基本上看一遍就會了。

  等到老爹的課堂再次開課時,又是一周過去了。

  星期六一早,我們一家剛剛吃過飯,小弦子便到了。不過這一次小弦子家有些興師動眾,就連很久不見的六叔叔都來了!

  他們大人聊了幾句后,老媽和小鹿阿姨相約去逛商場,在問我和小弦子要不要去的時候,我倆那頭要得跟撥浪鼓似的。

  開玩笑,跟著她們去逛商場不是自己找罪受么?腳桿走斷不說,還得給她們提東西,于是我和小弦子就躲在我臥室里邊玩兒游戲。

  爺爺奶奶知道六叔叔和老爹有事情要談,也到小區(qū)遛彎兒去了,客廳中就剩下了老爹和六叔叔。

  「新項目上出了點問題,想聽聽你的意見?!?p>  六叔叔還是那么直來直往,開門見山。

  老爹先從冰箱里給六叔叔拿了一瓶雪碧,又拿了幾包零食,這才坐在沙發(fā)上和六叔叔交談。

  這一談就是一上午,我們的課程也順延到了下午。

  因為有六叔叔的加入,我的臥室自然容不下這么多人,于是老爹把上課地點轉移到了客廳中。為了我方便敲代碼,老爹將他上大學時買的那臺筆記本給我用了。

  這電腦都快買了20年了,運行的速度依然還是很快的,唯一的問題就是電池一點都不耐用了。

  一切準備就緒后,老爹把他電腦屏幕投放在了投影儀上。

  「上一周我們先聊了函數(shù),知道了什么是函數(shù),為什么要用函數(shù)以及如何使用函數(shù),接下來又說到了變量的作用域、全局變量和局部變量。

  最后說到關鍵字static能夠幫局部變量逆天改命,讓局部變量成為與天地同壽的存在,小弦子提出疑問,static是如何做到的,于是就引出了C語言的程序運行時在內存中分區(qū)。

  C語言的程序運行時在內存中的分區(qū)按照內存地址從低到高一共分為:代碼區(qū)、常量區(qū)、全局數(shù)據(jù)局、堆區(qū)、棧區(qū),其中代碼區(qū)和常量區(qū)已經(jīng)介紹過了。

  代碼區(qū)存放的編譯成機器語言的程序代碼,CPU在執(zhí)行程序的時候,會挨著挨著讀取、執(zhí)行,最后在程序結束的時候由系統(tǒng)釋放。

  常量區(qū)存放的是數(shù)字、字符、字符串等常量。至于什么常量,我們也用100塊買薯片的例子來說明了。

  這里要補充一點,有個神奇的關鍵字能夠將一個變量變成一個常量,它就是const,如果一個變量在聲明時被const修飾,那么這個變量就搖身一變,變成了一個常量。

  這樣的變量需要在聲明時并對其初始化,一旦初始化完成后,這個變量就和其他常量一樣不能再修改了,就像這樣:

  const int PIC_WIDTH = 50;

  int const PIC_WIDTH = 50;

  這兩條語句表達的意義都是一樣的,都是符合C語言規(guī)范的,你們可以選擇一種自己喜歡的方式,不過兩種方式都要認識,不然以后看到別人用另外一種方式還以為是人家用錯了,那就糗大了。

  被const修飾的全局變量,也就是全局常量也是放在常量區(qū)的。」

  我和小弦子都都嘗試了一下,如果聲明一個被const修飾的變量不對其進行初始化,編譯器會報錯。如果初始化之后又對其進行賦值,依然會報錯。

  「第三個區(qū):全局數(shù)據(jù)區(qū),所有被static的變量和全局變量都是放在全局數(shù)據(jù)區(qū)的,這個區(qū)也是在程序結束以后由系統(tǒng)釋放。

  第四個?。憾褏^(qū),使用這個區(qū)就需要我們自己申請使用內存了,并且還必須自己釋放。如果申請了內存不釋放,就會導致內存泄露。假設在一個死循環(huán)中不斷申請內存并且不釋放的話,那計算機秒秒鐘就會因為內存耗盡卡死了。

  申請內存的函數(shù)是malloc,釋放是free,都是由庫函數(shù)提供的。

  最后一個區(qū):棧區(qū),所有除static修飾的局部變量都是放在這個區(qū)的,包括被const修飾的局部常量。一旦一個局部變量脫離了作用域,那么系統(tǒng)就會在棧中將它無情的殺死。

  而static之所以能夠為局部變量逆天改命,就是因為被它修飾后的變量已經(jīng)從棧區(qū)轉移到了全局數(shù)據(jù)區(qū),這個區(qū)里的數(shù)據(jù)要等到程序結束的時才會被釋放,都是和天地同壽的存在?!?p>  「哦哦,原來是這樣哦……」

  難怪老爹要這么大的力氣給我們講內存分區(qū),原來就是為了這一句話服務。

  「static除了有給局部變量逆天改命,它還有另外一個技能——隱身術?!?

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設置
設置
書架
加入書架
書頁
返回書頁
指南