當(dāng)前位置:首頁 > 公眾號精選 > 大魚機器人
[導(dǎo)讀]關(guān)注、星標公眾號,直達精彩內(nèi)容C語言應(yīng)該是絕大部分同學(xué)的編程第一課。對于非CS專業(yè)的同學(xué),學(xué)C語言主要是掌握一些基本的編程方法,C語言只是媒介。但是對于CS科班的同學(xué),C語言是后續(xù)的計組、體系結(jié)構(gòu)、操作系統(tǒng)、編譯原理等課程的基石,對于C語言本身甚至程序設(shè)計語言基礎(chǔ)原理的深入理解都...

關(guān)注、星標公眾號直達精彩內(nèi)容

  • C 語言應(yīng)該是絕大部分同學(xué)的編程第一課。

  • 對于非 CS 專業(yè)的同學(xué),學(xué) C 語言主要是掌握一些基本的編程方法,C 語言只是媒介。

  • 但是對于 CS 科班的同學(xué),C 語言是后續(xù)的計組、體系結(jié)構(gòu)、操作系統(tǒng)、編譯原理等課程的基石,對于 C 語言本身甚至程序設(shè)計語言基礎(chǔ)原理的深入理解都是應(yīng)該掌握的。

一、一圖勝千言

如果你不想看冗余的文字,直接看我畫的這個思維導(dǎo)圖即可:

二、C 語言易學(xué)難精?

很多同學(xué)都反映 C 語言難。

實際上,相比 C 、Java 之類的更加現(xiàn)代的語言, C 語言本身的語法特性非常少,不像 C 成了一鍋大雜燴。

C 語言本身只包含了編程語言最基本的語法,比如變量、if、else、for、while、枚舉、結(jié)構(gòu)體等,外加一個指針。

但是為什么大家都覺得難呢?

說下我大一時覺得難的原因吧,主要兩點:

1. 庫太少,太原始

用 C 語言寫個稍微復(fù)雜點的項目,你需要上來先把數(shù)據(jù)結(jié)構(gòu)、常見算法先實現(xiàn)一遍,更別說字符串,序列化這些了。

比如 Redis 里 SDS、LIST、ZSET、HASH等。

這其實對新手極其的不友好。

想做點有趣的東西,來,先寫個鏈表?

而在 Java 里直接 New 一個 LinkedLits、HashMap,簡直不要太高效。

再到后來,學(xué)了 Python,才發(fā)現(xiàn)這才是編程的高級形態(tài),寫個爬蟲直接 import xx,幾句話就完事了。

而在 C 語言里,你需要裸寫 Socket 發(fā)網(wǎng)絡(luò)包,還要解析 HTTP 協(xié)議,還要序列化 JSON,處理 HTTPS 這些(當(dāng)然,你也可以導(dǎo)入庫,但是由于 C/C 弱雞等同于沒有的包管理,也挺麻煩的。

這就是新手學(xué) C 容易被勸退的原因,做不出好玩的東西,全是一堆黑框框。

2. 內(nèi)存、指針

另外,常另 C 語言初學(xué)者感到頭疼的就是指針了。

指針其實本身不難,就是變量的地址嘛。

但是問題在于地址是個什么東西?

理解地址,就需要理解內(nèi)存,但是鑒于大多數(shù)同學(xué)學(xué)習(xí) C 語言,都是在大一,那時候沒有計算機基礎(chǔ)知識,其實理解起來還是稍微吃力的。

內(nèi)存,其實也很簡單啊,你就把它當(dāng)做一個黑盒,提供了讀和寫的能力。

就像快遞柜一樣,提供了存東西、放東西的能力:

讀哪里?寫哪里?

當(dāng)然是需要地址啊,地址就跟快遞柜上的編號一樣,而快遞柜格子里就相對于內(nèi)存中真正存放的內(nèi)容。

記住這張快遞柜的照片,其實指針你就理解了。

什么是二級指針?

就是快遞柜格子里放的是另外一個格子的編號,對應(yīng)到 C 語言舉個例子:

int?a?=?10;
int?*pa?=?
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉