![image-20220531094944782](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rcjsrnpyj21g40i642g.jpg)
**溫馨提示:**所有的筆記(需要使用Typora軟件打開)在視頻下方簡(jiǎn)介中直接獲取缓醋,純個(gè)人錄制盒使,不用加什么公眾號(hào)這些,各位小伙伴直接網(wǎng)盤自取吧彬伦。
# 計(jì)算機(jī)思維導(dǎo)論
計(jì)算機(jī)自1946年問世以來叹放,幾乎改變了整個(gè)世界式塌。
現(xiàn)在我們可以通過電腦來做很多事情书在,比如我們常常聽到的什么人工智能甘穿、電子競(jìng)技腮恩、大數(shù)據(jù)等等,都和計(jì)算機(jī)息息相關(guān)温兼,包括我們現(xiàn)在的手機(jī)秸滴、平板等智能設(shè)備,也是計(jì)算機(jī)轉(zhuǎn)變而來的募判。各位可以看看最頂上的這張圖片荡含,如果你在小時(shí)候接觸過計(jì)算機(jī)咒唆,那么一定對(duì)這張圖片(照片拍攝于1996年,在美國加利福尼亞州加利福尼亞州的鎖諾瑪縣)印象深刻释液,這張壁紙作為WindowsXP系統(tǒng)的默認(rèn)壁紙全释,曾經(jīng)展示在千家萬戶的電腦屏幕上。
也許你沒有接觸過計(jì)算機(jī)误债,也許你唯一接觸計(jì)算機(jī)就是用來打游戲浸船,也有可能你曾經(jīng)搗鼓過計(jì)算機(jī),在學(xué)習(xí)C語言之前寝蹈,先讓我們來了解一下計(jì)算機(jī)的世界李命。
## 計(jì)算機(jī)的世界
計(jì)算機(jī)雖然名字聽著很高級(jí),不過它也是由一個(gè)個(gè)簡(jiǎn)單電路組成的箫老。
![image-20220531100709841](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rd1x1rtgj21dy0cw74r.jpg)
這是我們?cè)诔踔芯蛯W(xué)習(xí)過的電路圖封字,不過這種電路太過簡(jiǎn)單,只能完成一些很基礎(chǔ)的的操作耍鬓,比如點(diǎn)亮小燈泡等阔籽。
很明顯想要實(shí)現(xiàn)計(jì)算機(jī)怎么高級(jí)的運(yùn)算機(jī)器,肯定是做不到的界斜,這時(shí)我們就需要引入更加強(qiáng)大的數(shù)字電路了仿耽。
> 用數(shù)字信號(hào)完成對(duì)數(shù)字量進(jìn)行[算術(shù)運(yùn)算](https://baike.baidu.com/item/算術(shù)運(yùn)算/3118202)和[邏輯運(yùn)算](https://baike.baidu.com/item/邏輯運(yùn)算/7224729)的電路稱為數(shù)字電路,或數(shù)字系統(tǒng)各薇。由于它具有邏輯運(yùn)算和邏輯處理功能项贺,所以又稱數(shù)字邏輯電路。現(xiàn)代的數(shù)字電路由半導(dǎo)體工藝制成的若干數(shù)字集成器件構(gòu)造而成峭判。邏輯門是數(shù)字邏輯電路的[基本單元](https://baike.baidu.com/item/基本單元/5246264)开缎。
>
> 計(jì)算機(jī)專業(yè)一般會(huì)在大一開放《數(shù)字電路》這門課程,會(huì)對(duì)計(jì)算機(jī)底層的數(shù)字電路實(shí)現(xiàn)原理進(jìn)行詳細(xì)介紹林螃。
數(shù)字電路引入了邏輯判斷奕删,我們來看看簡(jiǎn)單的數(shù)字電路:
![image-20220531102337270](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rdj1916aj21iq0dygm4.jpg)
數(shù)字電路中,用電壓的高低來區(qū)分出兩種信號(hào)疗认,低電壓表示0完残,高電壓表示1,由于只能通過這種方式表示出兩種類型的信號(hào)横漏,所以計(jì)算機(jī)采用的是二進(jìn)制谨设。
> [二進(jìn)制](https://baike.baidu.com/item/二進(jìn)制/361457)是計(jì)算技術(shù)中廣泛采用的一種[數(shù)制](https://baike.baidu.com/item/數(shù)制/217113)。二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)碼來表示的數(shù)缎浇。它的[基數(shù)](https://baike.baidu.com/item/基數(shù)/4260)為2扎拣,進(jìn)位規(guī)則是“逢二進(jìn)一”,借位規(guī)則是“借一當(dāng)二”。
>
> 比如我們一般采用的都是十進(jìn)制表示二蓝,比如9再繼續(xù)加1的話誉券,就需要進(jìn)位了,變成10刊愚,在二進(jìn)制中踊跟,因?yàn)橹挥?和1,所以當(dāng)1繼續(xù)加1時(shí)百拓,就需要進(jìn)位了琴锭,就變成10了(注意這不是十,讀成一零就行了)
當(dāng)然衙传,僅僅有兩種信號(hào)還不夠决帖,我們還需要邏輯門來輔助我們完成更多的計(jì)算,最基本的邏輯關(guān)系是與蓖捶、或地回、非,而邏輯門就有相應(yīng)的是[與門](https://baike.baidu.com/item/與門)俊鱼、[或門](https://baike.baidu.com/item/或門)和[非門](https://baike.baidu.com/item/非門)刻像,可以用電阻、電容并闲、二極管细睡、三極管等分立原件構(gòu)成(具體咋構(gòu)成的咱這里就不說了)
比如與操作,因?yàn)橹挥袃煞N類型帝火,我們一般將1表示為真溜徙,0表示為假,與操作(用&表示)要求兩個(gè)數(shù)參與進(jìn)來犀填,比如:
* 1 & 1 = 1 ? ?必須兩邊都是真蠢壹,結(jié)果才為真。
* 1 & 0 = 0 ? ?兩邊任意一個(gè)或者都不是真九巡,結(jié)果為假图贸。
或運(yùn)算(用 | 表示):
* 1 | 0 = 1 ? ?兩邊只要有一個(gè)為真,結(jié)果就為真
* 0 | 0 = 0 ? ?兩邊同時(shí)為假冕广,結(jié)果才是假
非運(yùn)算實(shí)際上就是取反操作(可以是 ! 表示)
* !1 = 0
* !0 = 1 ? ? 非運(yùn)算會(huì)將真變成假疏日,假變成真
有了這些運(yùn)算之后,我們的電路不僅僅可以實(shí)現(xiàn)計(jì)算撒汉,也可以實(shí)現(xiàn)各種各樣的邏輯判斷制恍,最終才能發(fā)展成我們的計(jì)算機(jī)。
前面我們大概介紹一下計(jì)算機(jī)的底層操作原理神凑,接著我們來看看計(jì)算機(jī)的基本組成。
![image-20220531105143154](https://tva1.sinaimg.cn/large/e6c9d24ely1h2reca0cgoj20x60b40uu.jpg)
相信各位熟知的計(jì)算機(jī)都是一個(gè)屏幕+一個(gè)主機(jī)的形式,然后配上我們的鍵盤鼠標(biāo)溉委,就可以開始使用了鹃唯,但是實(shí)際上標(biāo)準(zhǔn)的計(jì)算機(jī)結(jié)構(gòu)并沒有這么簡(jiǎn)單,我們來看看:
![image-20220531105407595](https://tva1.sinaimg.cn/large/e6c9d24ely1h2reersjdmj21k20fqdhl.jpg)
我們電腦最核心的部件瓣喊,當(dāng)屬CPU坡慌,因?yàn)閹缀跛械倪\(yùn)算都是依靠CPU進(jìn)行(各種各樣的計(jì)算電路已經(jīng)在CPU中安排好了,我們只需要發(fā)送對(duì)應(yīng)的指令就可以進(jìn)行對(duì)應(yīng)的運(yùn)算)藻三,它就像我們?nèi)说拇竽X一樣洪橘,有了大腦才能進(jìn)行思考。不過光有大腦還不行棵帽,還要有一些其他的部分來輔助工作熄求,比如我們想向電腦里面打字,那么就需要連接一個(gè)鍵盤才能輸入逗概,我們想要點(diǎn)擊桌面上的圖標(biāo)弟晚,那么就需要一個(gè)鼠標(biāo)來操作光標(biāo),這些都是輸入設(shè)備逾苫。我們的電腦開機(jī)之后顯示器上會(huì)顯示出畫面卿城,實(shí)際上顯示器就是輸出設(shè)備。
當(dāng)然除了這些內(nèi)容之外铅搓,我們的電腦還需要內(nèi)存來保存運(yùn)行時(shí)的一些數(shù)據(jù)瑟押,以及外存來保存文件(比如硬盤)等。我們常說的iPhone13 512G星掰,這個(gè)512G并不是指的內(nèi)存多望,而是指的外存,準(zhǔn)確的說是用于存放文件硬盤大小蹋偏,而真正的內(nèi)存是我們常說的4G/6G/8G運(yùn)行內(nèi)存便斥,內(nèi)存的速度遠(yuǎn)高于外存的速度枢纠,所以1G內(nèi)存的價(jià)格遠(yuǎn)超1G硬盤的價(jià)格。
![image-20220531132920027](https://tva1.sinaimg.cn/large/e6c9d24ely1h2riw9u06uj21bs0b4jso.jpg)
計(jì)算機(jī)包括五大部件:運(yùn)算器晋渺、控制器、存儲(chǔ)器木西、輸入和輸出設(shè)備。有了這一套完整的硬件環(huán)境八千,我們的電腦才算是有了一個(gè)完整的身體吗讶。
**問題:**我們上面提到的這些硬件設(shè)備哪些是屬于外設(shè)照皆?
## 操作系統(tǒng)概述
前面我們了解了一下計(jì)算機(jī)的大致原理和組成結(jié)構(gòu),但是光有這一套硬件可不行沸停,如何讓這一套硬件按照我們想要的方式運(yùn)作起來膜毁,也是非常重要的,這時(shí)我們就需要介紹操作系統(tǒng)了愤钾。
> 操作系統(tǒng)(operating system瘟滨,簡(jiǎn)稱OS)是管理[計(jì)算機(jī)硬件](https://baike.baidu.com/item/計(jì)算機(jī)硬件/5459592)與[軟件](https://baike.baidu.com/item/軟件/12053)資源的[計(jì)算機(jī)程序](https://baike.baidu.com/item/計(jì)算機(jī)程序/3220205)。操作系統(tǒng)需要處理如管理與[配置](https://baike.baidu.com/item/配置/2394679)[內(nèi)存](https://baike.baidu.com/item/內(nèi)存/103614)能颁、決定[系統(tǒng)資源](https://baike.baidu.com/item/系統(tǒng)資源/974435)供需的優(yōu)先次序杂瘸、控制[輸入設(shè)備](https://baike.baidu.com/item/輸入設(shè)備/10823368)與[輸出設(shè)備](https://baike.baidu.com/item/輸出設(shè)備/10823333)、操作網(wǎng)絡(luò)與管理[文件系統(tǒng)](https://baike.baidu.com/item/文件系統(tǒng)/4827215)等基本事務(wù)劲装。操作系統(tǒng)也提供一個(gè)讓用戶與系統(tǒng)[交互](https://baike.baidu.com/item/交互/6964417)操作的界面胧沫。
>
> 一般在計(jì)算機(jī)專業(yè)大二,會(huì)開放《操作系統(tǒng)》課程占业,會(huì)詳細(xì)講解操作系統(tǒng)的底層運(yùn)作機(jī)制和調(diào)度绒怨。
一般我們電腦上都安裝了Windows操作系統(tǒng)(蘋果筆記本安裝的是MacOS操作系統(tǒng)),現(xiàn)在主流的電腦都已經(jīng)預(yù)裝Windows11了:
![image-20220531135531352](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rjnis7lkj21ew0e041a.jpg)
有了操作系統(tǒng)谦疾,我們的電腦才能真正運(yùn)行起來南蹂,我們就可以輕松地通過鍵盤和鼠標(biāo)來操作電腦了。
不過操作系統(tǒng)最開始并不是圖形化界面念恍,它類似于Windows中的命令提示符:
![image-20220531142155616](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rkezow9dj21v60ew40f.jpg)
![image-20220531142617124](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rkjitqqnj21kc08475e.jpg)
沒有什么圖標(biāo)這些概念六剥,只有一個(gè)簡(jiǎn)簡(jiǎn)單單的黑框讓我們進(jìn)行操作,通過輸入命令來進(jìn)行一些簡(jiǎn)單的使用峰伙,程序的運(yùn)行結(jié)果也會(huì)在黑框框(命令行)中打印出來疗疟,不過雖然僅僅是一個(gè)黑框扔嵌,但是能運(yùn)行的程序可是非常非常多的官撼,只需要運(yùn)行我們編寫好的程序,就能完成各種各樣復(fù)雜的計(jì)算任務(wù)讲逛,并且計(jì)算機(jī)的計(jì)算速度遠(yuǎn)超我們的人腦匣摘。
> 中國超級(jí)計(jì)算機(jī)系統(tǒng)天河二號(hào)店诗,計(jì)算速度達(dá)到每秒5.49億億次。
當(dāng)然音榜,除了我們常見的Windows和MacOS系統(tǒng)之外庞瘸,還有我們以后需要經(jīng)常打交道的Linux操作系統(tǒng),這種操作系統(tǒng)是開源的擦囊,意思是所有的人都可以拿到源代碼進(jìn)行修改,于是就出現(xiàn)了很多發(fā)行版:
![image-20220531142844465](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rkm3bo7sj21gk0b4dh3.jpg)
這些發(fā)行版有帶圖形化界面的瞬场,也有不帶圖形化界面的泌类,不帶圖形化界面的Linux將是我們以后學(xué)習(xí)的重點(diǎn)刃榨。
不同操作系統(tǒng)之間的軟件并不是通用的枢希,比如Windows下我們的軟件一般是.exe后綴名稱苞轿,而MacOS下則不是逗物,并且也無法直接運(yùn)行.exe文件翎卓,這是因?yàn)椴煌僮飨到y(tǒng)的具體實(shí)現(xiàn)會(huì)存在一些不同,程序編譯(我們之后會(huì)介紹到)之后的格式也會(huì)不同坯门,所以是無法做到軟件通用的古戴。
正是因?yàn)橛辛瞬僮飨到y(tǒng)现恼,才能夠組織我們計(jì)算機(jī)的底層硬件(包括CPU述暂、內(nèi)存建炫、輸入輸出設(shè)備等)進(jìn)行有序工作肛跌,沒有操作系統(tǒng)電腦就如同一堆廢鐵察郁,只有軀殼沒有靈魂皮钠。
## 計(jì)算機(jī)編程語言
現(xiàn)在我們大致了解了我們的電腦的運(yùn)作原理麦轰,實(shí)際上是一套完整的硬件+一個(gè)成形的操作系統(tǒng)共同存在的款侵。接著我們就可以開始了解一下計(jì)算機(jī)的編程語言了新锈。我們前面介紹的操作系統(tǒng)也是由編程語言寫出來的眶熬,操作系統(tǒng)本身也算是一個(gè)軟件娜氏。
![image-20220531144405958](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rl228014j21eq0a2gnf.jpg)
那么操作系統(tǒng)是如何讓底層硬件進(jìn)行工作的呢牍白?實(shí)際上就是通過向CPU發(fā)送指令來完成的。
> 計(jì)算機(jī)指令就是指揮機(jī)器工作的指示和命令狸涌,程序就是一系列按一定順序排列的指令帕胆,執(zhí)行程序的過程就是計(jì)算機(jī)的工作過程懒豹。指令集驯用,就是CPU中用來計(jì)算和控制計(jì)算機(jī)系統(tǒng)的一套指令的集合蝴乔,而每一種新型的CPU在設(shè)計(jì)時(shí)就規(guī)定了一系列與其他硬件電路相配合的指令系統(tǒng)薇正。而指令集的先進(jìn)與否囚衔,也關(guān)系到CPU的性能發(fā)揮练湿,它也是CPU性能體現(xiàn)的一個(gè)重要標(biāo)志肥哎。
我們電腦中的CPU有多種多樣的贤姆,不同的CPU之間可能也會(huì)存在不同的架構(gòu),比如現(xiàn)在最常用的是x86架構(gòu)坐漏,還有我們手機(jī)平板這樣的移動(dòng)設(shè)備使用的arm架構(gòu)赊琳,不同的架構(gòu)指令集也會(huì)有不同躏筏。
我們知道,計(jì)算機(jī)底層硬件都是采用的0和1這樣的二進(jìn)制表示埃碱,所以指令也是一樣的砚殿,比如(這里隨便寫的):
* 000001 ?- ?代表開機(jī)
* 000010 ?- ?代表關(guān)機(jī)
* 000011 ?- ?代表進(jìn)行加法運(yùn)算
當(dāng)我們通過電路發(fā)送給CPU這樣的二進(jìn)制指令似炎,CPU就能夠根據(jù)我們的指令執(zhí)行對(duì)應(yīng)的任務(wù)羡藐,而我們編寫的程序保存在硬盤中也是這樣的二進(jìn)制形式悯许,我們只需要將這些指令組織好岸晦,按照我們的思路一條一條執(zhí)行對(duì)應(yīng)的命令睛藻,就能夠讓計(jì)算機(jī)計(jì)算任何我們需要的內(nèi)容了店印,這其實(shí)就是機(jī)器語言按摘。
不過隨著時(shí)代的進(jìn)步炫贤,指令集越來越大兰珍,CPU支持的運(yùn)算類型也越來越多询吴,這樣的純二進(jìn)制編寫實(shí)在是太累了猛计,并且越來越多的命令我們根本記不住,于是就有了匯編語言勾拉。匯編語言將這些二進(jìn)制的操作碼通過助記符來替換:
* MOV ? 傳送字或字節(jié)藕赞。
* MOVSX ?先符號(hào)擴(kuò)展,再傳送找默。
* MOVZX ?先零擴(kuò)展,再傳送惩激。
* PUSH ?把字壓入堆棧蟹演。
把這些原有的二進(jìn)制命令通過一個(gè)單詞來代替酒请,這樣是不是就好記多了,在程序編寫完成后布朦,我們只需要最后將這些單詞轉(zhuǎn)換回二進(jìn)制指令就可以了,這也是早期出現(xiàn)的低級(jí)編程語言涛舍。
![image-20220531150346899](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rlmjqp3dj217e09agmz.jpg)
不過雖然通過這些助記符就能夠很輕松地記住命令富雅,但是還是不夠方便没佑,因?yàn)榭赡芪覀兊某绦蛐枰瓿梢粋€(gè)很龐大的任務(wù)蛤奢,但是如果還是這樣一條一條指令進(jìn)行編寫陶贼,是不是太慢了點(diǎn)骇窍,有時(shí)候可能做一個(gè)簡(jiǎn)單的計(jì)算腹纳,都需要好幾條指令來完成嘲恍。于是佃牛,高級(jí)編程語言——C語言医舆,終于誕生了蔬将。
> ?C語言誕生于美國的[貝爾實(shí)驗(yàn)室](https://baike.baidu.com/item/貝爾實(shí)驗(yàn)室/686816)霞怀,由[丹尼斯·里奇](https://baike.baidu.com/item/丹尼斯·里奇/7267171)(Dennis MacAlistair Ritchie)以肯尼斯·藍(lán)·湯普森(Kenneth Lane Thompson)設(shè)計(jì)的[B語言](https://baike.baidu.com/item/B語言/1845842)為基礎(chǔ)發(fā)展而來,在它的主體設(shè)計(jì)完成后廉沮,湯普森和里奇用它完全重寫了UNIX操作系統(tǒng),且隨著UNIX操作系統(tǒng)的發(fā)展叁幢,C語言也得到了不斷的完善遥皂。
高級(jí)語言不同于低級(jí)語言演训,低級(jí)語言的主要操作對(duì)象是指令本身贝咙,而高級(jí)語言卻更加符合我們?nèi)四X的認(rèn)知庭猩,更像是通過我們?nèi)说乃季S蔼水,去告訴計(jì)算機(jī)你需要做什么,包括語法也會(huì)更加的簡(jiǎn)單易懂吊说。下面是一段簡(jiǎn)單的C語言代碼:
```c
int main() {
? ? int a = 10; ? //定義一個(gè)a等于10
? ? int b = 10; ? //定義一個(gè)b等于10
? ? int c = a + b; ? //語義非常明確颁井,c就是a加上b計(jì)算出來的結(jié)果雅宾。
? ? return 0;
}
```
不過現(xiàn)在看不懂沒關(guān)系眉抬,我們后面慢慢學(xué)懈凹。
C語言雖然支持按照我們更容易理解的方式去進(jìn)行編程蘸劈,但是最后還是會(huì)編譯成匯編指令最后變成計(jì)算機(jī)可以直接執(zhí)行的指令,不過具體的編譯過程洼专,我們不需要再關(guān)心了屁商,我們只需要去寫就可以了颈墅,而對(duì)我們代碼進(jìn)行編譯的東西恤筛,稱為編譯器毒坛。
![image-20220603123928430](https://tva1.sinaimg.cn/large/e6c9d24egy1h2uzn81nwsj21qk07mdhd.jpg)
當(dāng)然,除了C語言之外屯伞,還有很多其他的高級(jí)語言劣摇,比如Java末融、Python唆貌、C#锨咙、PHP等等酪刀,相比其他編程語言骂倘,C算是比較古老的一種了历涝,但是時(shí)隔多年直至今日,其他編程語言也依然無法撼動(dòng)它的王者地位:
![image-20220531151304124](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rlw7fvhmj20xo0b0wf4.jpg)
可以看到在2021年9月堰塌,依然排在編程語言排行榜的**第一名**(Python和Java緊隨其后)场刑,可見這門語言是多么的不可撼動(dòng)牵现,很多操作系統(tǒng)瞎疼、高級(jí)編程語言底層實(shí)現(xiàn)概漱,幾乎都是依靠C語言去編寫的(包括Java的底層也是C/C++實(shí)現(xiàn)的)所以學(xué)習(xí)這一門語言瓤摧,對(duì)于理工科尤其是計(jì)算機(jī)專業(yè)極為重要照弥,學(xué)好C語言你甚至可以融匯貫通到其他語言,學(xué)起來也會(huì)輕松很多悔常。
那么從下節(jié)課開始机打,我們就先做好一些環(huán)境上的準(zhǔn)備片迅。
## C語言開發(fā)環(huán)境部署
完成開發(fā)環(huán)境部署之后柑蛇,我們就可以使用C語言來將一句話輸出到控制臺(tái)了,成功編譯運(yùn)行下面的簡(jiǎn)單程序:
```c
#include <stdio.h>
int main() {
? ? printf("Hello, World!\n");
? ? return 0;
}
```
首先空免,我們既然要將我們編寫的C語言代碼進(jìn)行編譯蹋砚,那么肯定得找到一個(gè)合適的編譯器才行,現(xiàn)代的集成開發(fā)環(huán)境IDE一般都包含了這些編譯器都弹,所以我們不需要進(jìn)行單獨(dú)的安裝畅厢。
我們只需要找一個(gè)集成開發(fā)環(huán)境去安裝就行了框杜,目前功能比較完善的集成開發(fā)環(huán)境有:
* Codeblocks(支持Windows、Linux振劳、MacOS操作系統(tǒng))
* Visual Studio(支持Windows历恐、MacOS操作系統(tǒng))
* CLion(支持Windows专筷、Linux磷蛹、MacOS操作系統(tǒng))
這里我們就使用CLion作為我們的開發(fā)工具使用(這個(gè)IDE是收費(fèi)的,但是學(xué)生可以申請(qǐng)免費(fèi)使用庇勃,別擔(dān)心责嚷,大學(xué)四年肯定是夠你用了罕拂,選這個(gè)是考慮到后面同學(xué)們可能會(huì)繼續(xù)學(xué)習(xí)Java堡纬,Java語言的推薦IDE也是同一個(gè)公司的產(chǎn)品烤镐,界面都長(zhǎng)得差不多)當(dāng)然如果你想要使用其他的開發(fā)工具棍鳖,也可以碗旅,但是這里我們就不演示了祟辟。
首先前往官網(wǎng)下載:[CLion: A Cross-Platform IDE for C and C++ by JetBrains](https://www.jetbrains.com/clion/)
![image-20220531155158399](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rn0oo80lj22h00eudia.jpg)
下載完成后我們直接點(diǎn)擊安裝:
![image-20220531160109168](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rna8jfzdj21wa0lg438.jpg)
如果你不是很熟悉旧困,建議直接點(diǎn)Next安裝到C盤默認(rèn)路徑吼具,不要去修改拗盒,當(dāng)然如果確實(shí)C盤沒有空間陡蝇,那可以自行修改為其他路徑哮肚,但是注意最好路徑中不要出現(xiàn)中文。
![image-20220531160325932](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rncm5g59j220k0l4q7u.jpg)
勾選一下創(chuàng)建快捷方式悼嫉,然后繼續(xù)點(diǎn)Next等待安裝就行了:
![image-20220531160400589](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnd7qj7mj22080l67b2.jpg)
安裝完成后戏蔑,我們可以直接打開:
![image-20220531161024539](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnjvf3k1j227w0r079b.jpg)
這里會(huì)提示我們激活鲁纠,點(diǎn)擊按鈕去官網(wǎng)注冊(cè)一個(gè)賬號(hào)改含。注冊(cè)完成后,推薦去申請(qǐng)一下學(xué)生授權(quán)骤视,因?yàn)樵囉弥挥?0天:[Jetbrains學(xué)生授權(quán)獲取指南 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/378185042)
![image-20220531161215214](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnltppqfj22c40segr3.jpg)
這里我們點(diǎn)擊開始試用专酗,然后就可以點(diǎn)擊Continue了祷肯,現(xiàn)在成功來到主界面:
![image-20220531161354913](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnnis1prj22020u00xg.jpg)
由于是英文,使用不太方便翼闹,所以我們安裝一下中文插件:
![image-20220531161457379](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnom1mcvj223k0u0k1k.jpg)
現(xiàn)在我們就成功安裝好CLion集成開發(fā)環(huán)境了猎荠。
![image-20220531161549721](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnpj7nshj222r0u0wjs.jpg)
現(xiàn)在我們來創(chuàng)建我們的第一個(gè)C語言項(xiàng)目(我們的程序是以一個(gè)項(xiàng)目的形式進(jìn)行管理的法牲,這里知道怎么創(chuàng)建就行了):
![image-20220531161637209](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnqck8fyj22450u0tf6.jpg)
這里選擇C可執(zhí)行文件拒垃,然后項(xiàng)目的保存位置可以自行修改悼瓮,配置完成后點(diǎn)擊創(chuàng)建:
![image-20220531162129788](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnveombnj21kx0u00vt.jpg)
可以看到横堡,在創(chuàng)建之后命贴,會(huì)自動(dòng)為我們生成一段示例代碼胸蛛,而之后我們要編寫的代碼樱报,都在生成的main.c中進(jìn)行編寫迹蛤,除了這個(gè)文件,其他的全部不要去修改嚷量,也不用管是什么意思蝶溶,后面我們會(huì)慢慢介紹汗贫。
接著我們需要配置一下工具鏈落包,選擇捆綁的MinGW(如果已經(jīng)有了就不需要配置了)
![image-20220531163655149](https://tva1.sinaimg.cn/large/e6c9d24ely1h2robghz53j21kq0u0tdo.jpg)
那么這段示例代碼有了咐蝇,我們?nèi)绾尉幾g運(yùn)行呢?
![image-20220531162447514](https://tva1.sinaimg.cn/large/e6c9d24ely1h2rnyucqxmj21kv0u00wb.jpg)
我們可以點(diǎn)擊代碼旁邊的綠色三角形符號(hào)或是右上角的綠色三角形抹腿,就可以直接編譯運(yùn)行我們的代碼了警绩。運(yùn)行的結(jié)果是在控制臺(tái)輸出一個(gè)“HelloWorld肩祥!”混狠,當(dāng)然我們也可以直接運(yùn)行編譯出來的可執(zhí)行文件:
![image-20220531162638883](https://tva1.sinaimg.cn/large/e6c9d24ely1h2ro0rgqnaj21u20e4di5.jpg)
我們可以看到将饺,這里生成了一個(gè)`項(xiàng)目名稱.exe`文件予弧,這種就是Windows環(huán)境下可以直接運(yùn)行的應(yīng)用程序桌肴,我們可以打開這個(gè)文件夾坠七,直接使用cmd來運(yùn)行:
![image-20220531162824734](https://tva1.sinaimg.cn/large/e6c9d24ely1h2ro2lc6rxj218404qt9n.jpg)
運(yùn)行出來的效果是一樣的彪置,這種程序?qū)嶋H上就是最原始的命令行程序,輸入和輸出都是在這種黑框框中進(jìn)行的潘懊,而我們的主要學(xué)習(xí)目標(biāo)也是這種命令行程序。
這樣我們就配置好了開發(fā)環(huán)境救恨,然后就不要去動(dòng)其他的東西了,一般新手最容易遇到一些奇奇怪怪的問題释树。