前段時(shí)間巍膘,我分享了關(guān)于C語言的一些必備知識(shí)點(diǎn),感興趣的朋友可以查看我的往期文章芋簿,或是關(guān)注公眾號(hào)c語言進(jìn)階之路峡懈,查看次條文章,或搜索關(guān)鍵字“編程小白基礎(chǔ)必備”与斤,就能查看相關(guān)文章了肪康。
C語言的知識(shí)點(diǎn)講完了荚恶,這里還做一下整理與總結(jié),大家可以查看一下目錄回憶一下知識(shí)點(diǎn)磷支,如果都沒有問題谒撼,你就可以進(jìn)入下一個(gè)階段了。
分享順序如下:
C語言發(fā)展史
基本數(shù)據(jù)類型
常量與變量
表達(dá)式
運(yùn)算符
順序結(jié)構(gòu)
循環(huán)結(jié)構(gòu)
數(shù)組
函數(shù)
指針
結(jié)構(gòu)體
文件
如果大家看到以上知識(shí)點(diǎn)概括雾狈,對(duì)之前所學(xué)的知識(shí)還有一點(diǎn)模糊廓潜,可以查看我的往期文章哦~
題外話
這里很多新手學(xué)習(xí)會(huì)遇到的一些問題,希望可以解決你的疑惑善榛。
有什么好的C語言書籍推薦嗎辩蛋?
這個(gè)也可以看看往期文章,其實(shí)書籍這一塊已經(jīng)發(fā)過很多推薦了移盆。固定不變的還是那幾本書悼院,這里就不重復(fù)說了。
學(xué)知識(shí)是在看到不懂語法怎么辦咒循。
你要明白一件事情据途,你學(xué)的新知識(shí),如果實(shí)在弄不明白為什么剑鞍,那就記住他昨凡,不要浪費(fèi)過多的時(shí)間在這個(gè)上邊,因?yàn)檫@些知識(shí)經(jīng)歷了數(shù)十載的洗禮都沒有被推翻蚁署,說明他有存在的價(jià)值便脊,只不過現(xiàn)在你的知識(shí)儲(chǔ)備還不夠你理解他而已。比如我遇到過有人不明白賦值和全等的區(qū)別光戈,有自己的想法哪痰,其實(shí)這就和英語的固定搭配是一樣的,你不用去想它為什么這樣久妆,定義就是這樣晌杰,記住它就好了。
不管是現(xiàn)實(shí)世界還是計(jì)算機(jī)世界筷弦,現(xiàn)有的所有知識(shí)都是人為定義出來的肋演,然后經(jīng)過大家的推敲覺得這個(gè)事情是正確的,然后就會(huì)被廣泛使用烂琴。如果有一天你發(fā)現(xiàn)了現(xiàn)實(shí)世界某個(gè)知識(shí)定義的有問題爹殊,那么你也可以提出來,在學(xué)術(shù)界的審判之后奸绷,如果覺得你是正確的梗夸,那么,你就會(huì)被載入史冊(cè)号醉,并且你提出的事情也會(huì)被大家廣泛使用反症。
然后這里針對(duì)上面概括的知識(shí)點(diǎn)說一下:
1. 基礎(chǔ)知識(shí)
所謂的基礎(chǔ)知識(shí)辛块,就是我們之后學(xué)習(xí)C語言、甚至進(jìn)入編程行業(yè)所必須具備的一些前提知識(shí)铅碍。
你不了解一些計(jì)算機(jī)的知識(shí)润绵、你電腦上不裝編譯器(編譯器就是敲代碼的地方),那你還是不要學(xué)了胞谈,浪費(fèi)時(shí)間授药。因?yàn)榫幊淌窃趯?shí)際編寫代碼中成長(zhǎng)的,而不是看書成長(zhǎng)的呜魄。
所以,需要多少基礎(chǔ)知識(shí)呢莱衩?
其實(shí)剛開始不是很多爵嗅,都是一些常識(shí)的內(nèi)容,十八九歲接觸過電腦的同學(xué)都應(yīng)該有所了解的知識(shí)而已笨蚁。
首先睹晒,為什么學(xué)習(xí)C語言。
C語言是IT行業(yè)人必會(huì)的一門語言括细,C語言可以不用伪很,但是不能不會(huì)。當(dāng)然它的優(yōu)勢(shì)可以在文章中找到奋单。
其次锉试,計(jì)算機(jī)的組成器件。
都要學(xué)編程了览濒,不能連最基本的計(jì)算機(jī)組成都不知道吧呆盖。
最后,編譯器的安裝贷笛。
不僅僅是C語言要裝編譯器应又,只要你接觸編程,不管學(xué)什么語言乏苦,第一步就是裝編譯器輸出 “Hello World株扛!”。
2. 順序程序設(shè)計(jì)
順序程序設(shè)計(jì)汇荐,說白了就是寫代碼的過程洞就,與人做一件事情的流程很像。人處理一件事情基本都是從前往后做的拢驾,代碼也是一樣奖磁,寫在前邊的代碼會(huì)被先執(zhí)行到,后邊的代碼就會(huì)被晚一點(diǎn)執(zhí)行到繁疤。
人做事情順序有誤就會(huì)鬧笑話咖为;程序執(zhí)行的順序有問題秕狰,就會(huì)出現(xiàn)我們常說的一個(gè)詞——Bug。
了解程序應(yīng)該在哪里編寫躁染。
絕大部分編程語言編寫的時(shí)候鸣哀,都會(huì)有一個(gè)指定的程序開始的位置 “main”,也就是編譯器執(zhí)行代碼的時(shí)候會(huì)到 main 中尋找代碼來執(zhí)行吞彤。所以我們要把我們的代碼寫在這個(gè)里邊我衬。
C程序運(yùn)行需要的一些前提。
前一問說了饰恕,代碼要寫在 main 里邊挠羔,那么main要放在哪里呢?
了解編寫程序的思路埋嵌。
也就是說編寫代碼其實(shí)跟人做一件事情是一樣的破加,只不過我們寫代碼的目的是讓程序幫我們循環(huán)往復(fù)的做同一件事情而已。
3. 數(shù)據(jù)類型
現(xiàn)實(shí)世界中有整數(shù)雹嗦、小數(shù)范舀、分?jǐn)?shù)、復(fù)數(shù)等等數(shù)據(jù)類型了罪;這些數(shù)據(jù)類型之所以會(huì)存在锭环,不是憑空產(chǎn)生的,是一些很偉大的數(shù)學(xué)家定義出來的泊藕,之所以可以被全世界用這么久并且將會(huì)一直用下去辅辩,是因?yàn)樗先说恼J(rèn)知并且切合實(shí)際。
編程界也可以看作是一個(gè)小世界吱七,那么這個(gè)小世界也應(yīng)該存在著一些數(shù)據(jù)類型汽久,只不過程序中的數(shù)據(jù)類型的主體不是人,而是計(jì)算機(jī)了踊餐。由于計(jì)算機(jī)的存儲(chǔ)方式以及存儲(chǔ)長(zhǎng)度的限制景醇,C語言就會(huì)定義一些盡可能切合實(shí)際的、大家認(rèn)可的數(shù)據(jù)類型來供C語言編寫程序過程中使用吝岭。這就是數(shù)據(jù)類型產(chǎn)生的原因三痰。
4. 標(biāo)準(zhǔn)輸入輸出
經(jīng)過上邊的學(xué)習(xí)你應(yīng)該會(huì)知道任何數(shù)據(jù)在計(jì)算機(jī)中的存放形式都是二進(jìn)制的0/1串,那么當(dāng)我們想要輸出一個(gè)文字的時(shí)候窜管,總不能把這些0/1串直接輸出吧散劫。這個(gè)時(shí)候就是格式化的作用了,它可以根據(jù)用戶選擇的格式化方式將0/1串轉(zhuǎn)化為用戶想要的數(shù)據(jù)形式幕帆。
5. 進(jìn)制轉(zhuǎn)換
現(xiàn)實(shí)世界中使用的是十進(jìn)制获搏,計(jì)算機(jī)使用是二進(jìn)制,于是就要學(xué)習(xí)十進(jìn)制與二進(jìn)制之間的轉(zhuǎn)換失乾。
在現(xiàn)實(shí)世界中常熙,如果想要描述一個(gè)很大的數(shù)纬乍,我們知道用大一點(diǎn)的單位來描述。計(jì)算機(jī)也是一樣裸卫,如果直接用二進(jìn)制描述一個(gè)數(shù)據(jù)有點(diǎn)繁瑣仿贬,所以就會(huì)產(chǎn)生一些較大的單位,比如:八進(jìn)制墓贿,十六進(jìn)制茧泪。
舉一個(gè)栗子:現(xiàn)實(shí)世界中10000用萬做單位可以描述為10萬。計(jì)算機(jī)中二進(jìn)制的數(shù)據(jù) 00110001 使用十六進(jìn)制表示就是 31聋袋,確實(shí)簡(jiǎn)潔許多队伟。
6. 選擇結(jié)構(gòu)
選擇結(jié)構(gòu)就是從眾多數(shù)據(jù)中選擇出符合需求的數(shù)據(jù)來進(jìn)行下一步操作。
舉一個(gè)栗子:從整個(gè)班級(jí)的成績(jī)單中選擇出 數(shù)學(xué)成績(jī)>60分的同學(xué)幽勒,這個(gè)過程就是選擇結(jié)構(gòu)需要做的事情缰泡。
7. 循環(huán)結(jié)構(gòu)
日常生活中有很多事情都是重復(fù),再重復(fù)代嗤。在程序編寫中也是這個(gè)樣子,有一些代碼或許會(huì)被重復(fù)執(zhí)行成千上萬遍缠借,這個(gè)時(shí)候就可以用循環(huán)結(jié)構(gòu)去代替一些重復(fù)執(zhí)行的代碼干毅,只需要保留一份代碼,然后令這份代碼循環(huán)執(zhí)行多次即可泼返。
嵌套循環(huán):就是在循環(huán)結(jié)構(gòu)里邊再放循環(huán)硝逢。
三個(gè)循環(huán)的差異以及特性:要知道for循環(huán)可以指定循環(huán)的次數(shù);while循環(huán)次數(shù)不確定绅喉;do...while會(huì)先循環(huán)一次在進(jìn)入判斷條件渠鸽。
循環(huán)的中斷:循環(huán)有兩種結(jié)束方式,第一種是 循環(huán)次數(shù)或者循環(huán)條件 不滿足了柴罐,就停止循環(huán)了徽缚;還有一種就是強(qiáng)制循環(huán)的停止。
強(qiáng)制停止有兩種方式:break與continue革屠。
8.數(shù)組
隨著深入的學(xué)習(xí)你會(huì)發(fā)現(xiàn)數(shù)據(jù)越來越多凿试,有的數(shù)據(jù)格式相同、并且表達(dá)的含義相同似芝。如果可以將這些數(shù)據(jù)存放在一起統(tǒng)一命名那婉,就會(huì)很方便。于是數(shù)組的概念就產(chǎn)生了党瓮。
數(shù)組就是一組數(shù)據(jù)的集合详炬,并且這個(gè)數(shù)據(jù)集合是有順序的,集合中的所有數(shù)據(jù)的數(shù)據(jù)類型都是相同的寞奸。
9. 函數(shù)
隨著學(xué)習(xí)的深入呛谜,發(fā)現(xiàn)main中放的代碼越來越多在跳,并且有很多代碼重復(fù)寫了多次,導(dǎo)致main越來越臃腫呻率;于是我們就打算把main中具有相同功能的代碼抽取出來硬毕,這就叫做函數(shù),給這段函數(shù)起一個(gè)名字礼仗,然后使用的時(shí)候只用調(diào)用這個(gè)函數(shù)名字就可以了吐咳。
10. 指針
指針是C語言的精華所在,指針提供給用戶可以直接操作內(nèi)存地址的功能元践,其他語言都是屏蔽了這個(gè)功能韭脊,正是由于指針的存在C語言才變得強(qiáng)大,同時(shí)也是因?yàn)橹羔樀拇嬖贑語言才變得不安全单旁。
舉一個(gè)栗子:有一個(gè)變量 int a = 3; 平常修改數(shù)據(jù)的方式是使用變量a來操作的沪羔,當(dāng)使用指針的時(shí)候,可以直接找到電腦內(nèi)存中的這個(gè)3所在的地址象浑,直接修改蔫饰,而不用通過變量a。
指針的工作原理愉豺,以及內(nèi)存原理:指針就是地址篓吁,地址就是內(nèi)存中存放實(shí)際數(shù)據(jù)的空間。
指針蚪拦,指針變量的關(guān)系:指針是地址杖剪,指針變量是指向指針的一個(gè)變量而已。
這一部分知識(shí)點(diǎn)我分為了上下兩篇
小編推薦一個(gè)學(xué)C語言/C++的學(xué)習(xí)裙【 ?712,284,705】驰贷,無論你是大牛還是小白盛嘿,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具括袒,很多干貨和技術(shù)資料分享次兆!
11. 結(jié)構(gòu)體
接觸越來越多的需求之后,你會(huì)發(fā)現(xiàn)簡(jiǎn)單的數(shù)據(jù)類型int锹锰,float类垦,char等等根本不夠用了,于是就需要使用結(jié)構(gòu)體自定義一些數(shù)據(jù)類型來使用城须。
舉一個(gè)栗子:我們要自定義一個(gè) student 數(shù)據(jù)類型蚤认,但是C語言中并沒有這個(gè)數(shù)據(jù)類型,怎么辦呢糕伐?我們可以通過結(jié)構(gòu)體將基礎(chǔ)的數(shù)據(jù)類型int砰琢,char,數(shù)組等等組織起來,形成一個(gè)我們自定義的數(shù)據(jù)類型陪汽,并且給他起一個(gè)名字叫做 student训唱。這就是自定義的一個(gè)數(shù)據(jù)類型。
12. 文件
最后挚冤,所有的編程語言都是可以操作文件的况增,因?yàn)槌绦蜻\(yùn)行起來之后的所有數(shù)據(jù)都是臨時(shí)的,如果不存放在文件或者數(shù)據(jù)庫(kù)中训挡,那么當(dāng)程序運(yùn)行結(jié)束之后澳骤,數(shù)據(jù)就會(huì)消失,目前沒有學(xué)習(xí)數(shù)據(jù)庫(kù)澜薄,那么就把數(shù)據(jù)存放在文件中吧为肮。這里的話,知識(shí)點(diǎn)是以視頻的方式再公眾號(hào)發(fā)布肤京,看了應(yīng)該會(huì)對(duì)你有所幫助颊艳。
好了,以上就是往期C語言知識(shí)的一個(gè)整理與總結(jié)忘分,詳細(xì)信息可以在公眾號(hào)查看哦~