YYDS!阮一峰老師的又一開源神作
給大家報告下,阮一峰老師的《C語言入門教程》于 2021 年 9 月 7 日上線了!
對,和往常一樣,這個教程是開源的,采用知識共享許可證,源碼托管在 GitHub,大家可以自由使用。
https://github.com/wangdoc/clang-tutorial
在線閱讀地址也有:
https://wangdoc.com/clang/
我第一時間就拜讀了一遍,受益匪淺!可以說目前我見到的最好的 C語言入門教程了,沒有之一!
要知道,國內(nèi)的絕大多數(shù)高校,大一都會安排 C 語言這門課,教材通常會選擇譚浩強的C語言程序設(shè)計,但這本書在網(wǎng)上的風(fēng)評極差。
而阮一峰老師的作品,想必大家都有所耳聞,硬核的同時,又通俗易懂,深受廣大讀者的喜歡。
福音?。∥乙翊等钜环辶死蠋煹倪@份《C語言入門教程》。
考慮到很多小伙伴喜歡 PDF 版的,我就立馬給準(zhǔn)備了!
關(guān)注的小伙伴可以點擊下方的名片直接跳轉(zhuǎn)過去發(fā)送關(guān)鍵字「08」拉取下載地址。
之前給大家推薦的學(xué)習(xí) C語言的視頻教程有浙大翁愷教授的《C語言程序設(shè)計》,在 B 站上和中國大學(xué)慕課網(wǎng)上都可以看得到。
那配上阮一峰老師的這個在線文檔教程,可以說是完美!

我對這份教程是非常滿意的,該講的地方都講到了,示例也給了很多,對初學(xué)者來說,完全夠用了。
阮一峰老師在寫這份《C語言入門教程》的時候還是花費了很多心思的,因為 C 代碼的寫法實在是太自由了,而平常工作中又確實很少有機會寫 C 代碼,所以前前后后花了 6 個多月的時間。
C語言最初是作為 Unix 系統(tǒng)的開發(fā)工具而發(fā)明的。1972年,丹尼斯·里奇和布萊恩·柯林漢在 B 語言的基礎(chǔ)上重新設(shè)計了一門新語言,這種新語言取代了 B 語言,所以稱為 C 語言。
1973年,整個 Unix 系統(tǒng)都使用了 C 語言重寫。此后,C 語言開始快速流傳,廣泛用于各種操作系統(tǒng)和系統(tǒng)軟件的開發(fā)。
除了用于計算機操作系統(tǒng)的編寫,C語言現(xiàn)在主要用于嵌入式系統(tǒng)的開發(fā),騎車、照相機、家用電器等設(shè)備的底層系統(tǒng)都是用 C 語言編程的。
C語言能夠直接操作硬件、管理內(nèi)存、跟操作系統(tǒng)交互,這使得它成為了一種非常接近底層的編程語言,非常適合有極高性能要求的程序。
C語言對程序員的限制很少,它假設(shè)程序員知道自己在干嘛,不會限制程序員做各種騷操作,想干嘛就干嘛,反正后果自負(fù),哈哈哈。
C語言的哲學(xué)就是“極度相信程序員,不妨礙他們做事”,所以,C語言讓程序員自己管理內(nèi)存,沒有垃圾回收功能,也不提供類型檢查、數(shù)組下標(biāo)范圍檢查、指針位置檢查等防御措施。
表面上看,這似乎很危險,但對于有一定水平的程序員來說,簡直就是福音,大膽去編程,解放生產(chǎn)效率就對了。
另外一方面,C語言的 debug 不是很容易,寫代碼的時候必須要富有縝密的邏輯性,一旦出錯,是很難找補的。
C語言在武林界的地位就相當(dāng)于少林的地位,天下武功皆出少林,很多流行的編程語言都是以 C語言為基礎(chǔ)的,比如說C++、Java、C#、JavaScript 等等,有了 C語言的基礎(chǔ),再學(xué)習(xí)這些語言都會有很大幫助。
經(jīng)過多年的發(fā)展,C語言有蠻多版本的,1999 年 C99 是目前最流行的 C 版本。
常見的 C 語言編譯器是自由軟件基金會推出的 GCC 編譯器,它可以免費使用。Linux 和 Mac 系統(tǒng)可以直接安裝 GCC,Windows 系統(tǒng)可以安裝 MinGW。
不過網(wǎng)上也有蠻多在線編譯器的,可以直接在網(wǎng)頁上模擬運行 C 代碼,查看結(jié)果,非常方便。

CodingGround網(wǎng)址:https://www.tutorialspoint.com/compile_c_online.php
C 語言是一種編譯型語言,源碼是文本文件,本身是無法執(zhí)行的,需要通過編譯器,生成二進制的可執(zhí)行文件。
編譯器將代碼從文本翻譯成二進制指令的過程,被稱為編譯階段,又稱為“編譯時”(compile time),跟運行階段(又稱為“運行時”)相區(qū)分。
C語言中,指針是令初學(xué)者頭痛的一塊內(nèi)容,所以我這里簡單給大家聊兩句。
指針是什么?它是一個值,這個值代表一個內(nèi)存地址,因此,指針就相當(dāng)于指向某個內(nèi)存地址的路標(biāo)。
字符*表示指針,通常跟在類型關(guān)鍵字的后面,表示指針指向的是什么類型的值。比如,char*表示一個指向字符的指針,float*表示一個指向float類型的值的指針。
*這個符號除了表示指針以外,還可以作為運算符,用來取出指針變量所指向的內(nèi)存地址里面的值。
而&運算符用來取出一個變量所在的內(nèi)存地址。
背會理解了這幾句,可以說指針的理論基礎(chǔ)就有了??邕^去指針這一關(guān),C 語言最硬核的部分也就掌握了。
OK,今天就簡單聊到這里,希望阮一峰老師的這份教程能幫助到大家。我們下期見~
