最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

非常規(guī)入門C語言:6、數(shù)據(jù)與程序結構

2023-06-15 17:20 作者:嬴寒  | 我要投稿

在前文中,我們使用不同的標識符表示不同的數(shù)據(jù),同時還可以為數(shù)據(jù)分配各種各樣的類型,如:字節(jié)、字符、整型、長整型等等。

但是,我們還想從未考慮過數(shù)據(jù)到底存儲到哪里去了。

當然是內存中。但只是在內存中嗎?那 CPU 在干什么?當然是在計算。但 CPU 和內存不是有時差嗎?或者說內存不是比 CPU 慢得多嗎?CPU 那么貴,當然得讓它在單位時間內干很多事兒才好。

那干脆在 CPU 內部搞一片區(qū)域,叫“寄存器”,專門存放準備計算或計算出來的數(shù)據(jù)。

那寄存器中的數(shù)據(jù)有從哪來?畢竟內存太慢了。還需要在寄存器和內存之間加一個爬梯,叫“高速緩存”。高速緩存使用不同物理結構,那么它的速度一般也不同。也就出現(xiàn)了多級高速緩存。

那么,一般計算中的數(shù)據(jù)放在寄存器,不在寄存器中的數(shù)據(jù),從高速緩存中取,高速緩存的數(shù)據(jù)從內容中取。

然而我們需要考慮一件事情:硬件的響應速度會不會受軟件的影響?

答案是說不準!

如果你的軟件內部邏輯是瀑布形式的執(zhí)行下去,那硬件的速度基本不會受太大的影響。

但是,如果你的軟件的內部邏輯是東一榔頭西一棒槌式的執(zhí)行,那硬件的速度必然會受到影響。

那如何才能更徹底的壓榨計算機硬件的性能呢?那就必須對軟件或程序的邏輯提出要求,即:程序的內部邏輯盡可能地減少非順序結構。為什么是盡可能呢?因為想要寫出完全的順序結構的程序是不可能的。

如果你想對某個數(shù)據(jù)進行判斷,你就需要使用到 ifelse


如果你相對一組數(shù)據(jù)執(zhí)行相同的操作,你就需要使用到 loop-while 式的循環(huán),在 C 語言中對應的是 for、while 以及 do while。


如果程序中有一段代碼可能多次使用,你就需要將這段代碼封裝成一個子程序,在 C 語言,子程序又稱為“函數(shù)”。?

如果這段代碼需要產生一個結果,就需要使這個函數(shù)指定一個返回數(shù)據(jù),使用 return。

那我們的程序一般情況下是怎么執(zhí)行的呢?難道我們隨便寫一堆前文中提到的內容就能正確的運行了嗎?顯然這是不可能的。

所有的程序都是可控制的,所有的計算都是可監(jiān)視的。

也就是說:程序是有頭有尾的,計算是有輸入有輸出的。

當我們按下“電源”鍵時,計算機就開始運行;當我們長按“電源”鍵時,計算機就會被強制關機。(程序的運行可以被強制中斷)


計算機開機后,我們可以使用鍵盤、鼠標、攝像頭、麥克風甚至觸控板、觸控屏直接“干擾”計算機的“正?!边\行。(程序的運行實際上就是對輸入的任何東西進行有選擇的計算,并產生一個預期內的結果)

那么程序從哪里還是運行呢?我們可以指定一個入口,規(guī)定不論何時,程序都必須從這個入口進入,然后開始執(zhí)行。

那么,這個入口的形式是怎樣的呢?好像不管怎么寫,都是數(shù)據(jù)。但是有一個比較特殊的“東西”,那就是“子程序”,也就是 C 語言中的“函數(shù)”。

我們可以規(guī)定從哪一個函數(shù)開始執(zhí)行,當這個函數(shù)結束的時候,那就代表這個程序也要結束了。

在此,我們寫一個簡單的示范程序。

如果你使用的是 Linux 系統(tǒng),那么你可以使用 gcc 通過以下命令進行編譯:

其中-e的作用就是指定的函數(shù)名,-o的作用是指定輸出的可執(zhí)行文件名。運行 ./test.exe 文件后,它的返回值就是上文中的 2。當你想返回什么數(shù)值就可以寫什么。


很顯然,這很麻煩。而且這一命令僅適用于 gcc 。想要在 Windows 上運行就需要安裝模擬 Linux環(huán)境。而在 MacOS 上,雖然也有 gcc 軟件,但是版本也很老了。

幸運的是,C 語言編譯器已經(jīng)為我們指定了一個默認的入口函數(shù),名字叫做 main,這個入口函數(shù)也是一個普通函數(shù),同樣可以被調用。但是如果你不在其中加入限制,那么程序就會瘋狂的反復在各種子程序中反復調用,最終導致程序崩潰而退出。

總結一下

  1. 程序中數(shù)據(jù)能夠被存儲在寄存器、內存中

  2. 程序的結構大致分為順序執(zhí)行與非順序執(zhí)行

  3. 程序的非順序執(zhí)行包括判斷、循環(huán)、函數(shù)調用

  4. C 語言中,默認使用 main 作為入口函數(shù),特殊場景也可以自定義

  5. 入口函數(shù)屬于普通函數(shù),能夠被調用,但必須做出邏輯判斷以便于程序正常結束

非常規(guī)入門C語言:6、數(shù)據(jù)與程序結構的評論 (共 條)

分享到微博請遵守國家法律
海淀区| 信宜市| 化德县| 霍城县| 开鲁县| 天长市| 衡南县| 博野县| 兴仁县| 泾阳县| 交城县| 赤城县| 阳原县| 溧阳市| 东光县| 巍山| 永州市| 皮山县| 临夏县| 泸水县| 疏附县| 儋州市| 徐州市| 开平市| 溧阳市| 庆阳市| 禄丰县| 武胜县| 祥云县| 宁陕县| 读书| 壤塘县| 纳雍县| 嘉义县| 元谋县| 陆丰市| 修武县| 商河县| 丁青县| 石门县| 连城县|