書架 | 搜書

程式媛養成計劃/職場、現代都市、陽光/for、弦子、int/TXT免費下載/精彩無彈窗下載

時間:2018-04-21 21:27 /現代都市 / 編輯:布魯斯韋恩
完整版小說《程式媛養成計劃》是任煦之秋所編寫的都市生活、現代都市、隨身流的小說,主角for,int,弦子,書中主要講述了:「被釋放掉了,為了證明這一點,我們在剛才的程式碼中新增一句程式碼,同時也向你們介紹『&』的第三個功能,取地址。 int fieldarea { int a = ...

程式媛養成計劃

推薦指數:10分

更新時間:2017-12-23 15:20:16

作品頻道:女頻

《程式媛養成計劃》線上閱讀

《程式媛養成計劃》精彩章節

「被釋放掉了,為了證明這一點,我們在剛才的程式碼中新增一句程式碼,同時也向你們介紹『&』的第三個功能,取地址。

int fieldarea()

{

int a = 100;

for(int i = 0; i < 10; i)

{

int b = i;

printf(“b 的地址是:%d“,&b);

}

}

我們已經學過了『&』的兩種用法,一種是用於兩個數做位與運算,一種是用來做邏輯與,而這種放在一個量的命面的作,做取地址。

至於什麼地址,我簡單的說一下。

最開始我給你們說過,電腦的最基本組成是成千上萬億個開關構成的,但是雖然都是開關,卻也分不同的類別,主要來說分為三種。

第一種cpu,它是電腦的核心,它的裡面的開關狀轉換速度非常,但是造價也非常貴。

第二種盤,就是『我的電腦』裡邊什麼c、d、e、f盤,用來儲存檔案,程式碼這些。盤的開關狀轉換就很慢了,好處是宜。

當我們要執行程式的時候,cpu需要從盤中讀取編譯成機器語言的exe,但是盤的讀寫速度相對於cpu來說太慢了,本沒有辦法讓它的效率得到有效的發揮。

於是就引入了第三種——記憶體,記憶體的開關狀轉換速度在cpu和盤中間,造價也是如此,所以它就作為了cpu和盤的一個緩衝介質。

當cpu要從盤裡邊讀寫資料的時候,就讓記憶體先去載入,然cpu再從記憶體中讀取。cpu在讀取記憶體裡面的資料時,記憶體又可以去盤中讀取面的內容,這樣就形成了一個流線,cpu的執行效率就大大提高了。

所以,程式要正常執行,就需要依靠記憶體。一旦記憶體不夠用了,電腦就會得特別卡,甚至於機。你們看,桌面邊邊這個顯示百分比的圓就是電腦管家顯示的記憶體使用情況。

理論上來說,記憶體的容量越大,就可以開越多的程式,但是也不是越大越好。因為程式的執行是由cpu來排程的,假設cpu的極限是排程1000個程式,而記憶體的容量可以供1500個程式使用也是沒有意義的。

現在主流的置一般都會給電腦搭16gb的記憶體,這是什麼概念呢?1gbyte=1024mbyte=1024x1024kbyte=1024x1024x1024byte。在最開始和你們說過,為了方管理,個開關被統一為一個位元組(byte),你們自己算算,這是有多少個位元組。

為了於管理,開發計算機的那些科學家就給每一個位元組編了一個號,而這個編號就記憶體地址。我們用『&』獲取的正是一個量在記憶體中的地址。」

老爹一邊說,還一邊將我的電腦機箱蓋子打開了,和我們介紹cpu、記憶體條和什麼樣子。這些知識雖然看上去和程式設計沒有關係,但是卻在程式設計中起著舉足重的作用。

老爹在介紹完了之,我和小弦子將fieldarea函式給運行了一下,結果讓我傻眼了,因為10次打印出來量b的地址居然是一樣的!

我重複了運行了好幾次,雖然每次執行b的地址和上一次的不一樣,但是在這10次迴圈中的地址卻是一模一樣。

再三檢查,我確認不是自己的問題,於是看向了小弦子,看看他那邊是個什麼情況。

結果小弦子的情況和我完全相同!這是什麼情況?難是老爹講錯了?

我和小弦子都看出了對方眼裡的疑,我們同時看向了老爹。

老爹愣了一下,然在看了我和小弦子程式執行結果陷入了沉思。

接著他在自己電腦上運行了一下,結果也是一樣的。

「對不起,孩子們,這裡應該是我講錯了。從我讀大學那個時候就一直以為在for迴圈裡面宣告的量應該是每次都是重新生成的,謝謝你們糾正了這個錯誤。」

說完,老爹鄭重地向我們了歉。

「有很多事情,一直是如此不見得都是對的,就算是目見耳聞都不一定是真的,透過這件事你們也應該能夠看出來了。所以,我希望你們保持一顆質疑、真的心。

好了,咱們接著講作用域。量的作用域除了透過大括號來判斷,還有幾種比較特殊的情況:

第一種,for迴圈小括號中定義的量。

for(int i = 0; i < 10; i)

{

}

這裡的量i它的作用域就是整個for,所以我只能在for結構內使用它,一旦脫離for的作用域,它就被釋放了。

第二種,宣告在所有函式外面的量。

int global = 100;

int main(int argv, char const* args[])

{

}

int func(void)

{}

這裡的global量它在所有的函式外面,所以當c檔案中所有的函式都可以使用它。

還有一點比較重要的東西:如果一個量的作用域內還有其他的作用域,那麼在這個作用域裡面也是也是用這個量的。

舉個例子,區的作用域是整個郫都區,而光鎮是在郫都區內,所以區自然可以管理光鎮的事務。

這也解釋了為什麼global能夠被當c檔案裡的所有函式使用,因為這些函式的範圍在global作用域中。

那麼剛剛main和add中都存在名為sum的量問題也解決了,因為這兩個sum本就在是各種的作用域中宣告的。其實重點是在同一個作用域中宣告同名量,注意,是宣告,而不是不能有,這點一定要注意!

也就是說下面這種是不行的

void func(void)

{

int a = 10;

int a = 10;

}

而下面兩種是可以的:

void funca(void)

{

int a = 10;

}

void funcb(void)

{

int b = 10;

}

或者這種也是可以的:

int a = 10;

void funcd(void)

{

int a = 20;

}

一下子和你們說了這麼多,估計你們很難理解,不過只要多看看,再結實際運用,應該就能夠理解了。

簡單的來說,作用域你可以理解為一個量的地盤,當要用這個量的時候在這個量的地盤中,那就沒有問題,如果不在這個量的地盤中,那就不能使用。

還有就是無論什麼時候都不能讓電腦疑,就像一個作用域中你如果聲明瞭兩個名字相同的量,計算機就懵了,因為它也不知你到底是要使用哪一個。」

老爹補充

「那上面最一種情況計算機難不會疑麼?它怎麼知到底使用哪個a呢?」

(36 / 58)
程式媛養成計劃

程式媛養成計劃

作者:任煦之秋
型別:現代都市
完結:
時間:2018-04-21 21:27

相關內容
大家正在讀

本站所有小說為轉載作品,所有章節均由網友上傳,轉載至本站只是為了宣傳本書讓更多讀者欣賞。

當前日期:
Copyright © 2024 牛閱網 All Rights Reserved.
[臺灣版]

聯絡渠道:mail