-
1 # 程式設計鎮魔司
-
2 # IT課代表家
java、c、c++總是呈現出三分天下的局面,過去幾十年裡,c可謂獨領風騷,即使偶爾被java超越,也可見其經久不衰的魅力,堪稱是計算機語言界的“常青樹”,今天我們就去領悟高階語言中的C語言。
C語言發展史
1969年美國阿波羅11號登月,同年肯·湯普森(Ken Thompson)加入了貝爾實驗室,他做出了一款名叫"star travel"星際旅行的遊戲。結果他發現自己寫的遊戲沒有很好的作業系統來執行,由此人類歷史上一個偉大的作業系統UNIX由此誕生。Ken Thompson也被稱為UNIX之父。在貝爾實驗室裡,Ken Thompson和Dennis Ritchie繼續對UNIX作業系統進行改造,發現之前用的組合語言做移植太過麻煩。最終在1972年,誕生了C語言。Dennis Ritchie被稱為C語言之父,他向全世界寫下第一個C語言程式Hello,world!正是因為C語言的存在,才有了後來的c++、java......
C語言的優勢
C語言屬於高階語言,具有可移植性,面向過程的,貼近底層、執行速度快,採用結構化程式設計方法,自頂向下、逐步求精。
C可以用來開發比較底層的東西,例如驅動、通訊協議之類的,在unix和linux環境下也是不可缺少的,在嵌入式領域也是大有作為的。C語言是一種工具,重點是學習它的程式設計方法和思維模式。
-
3 # simxpert
好不好學,每個人的感覺都不一樣的。但是不論如何,總比彙編學起來容易吧。終歸是高階語言,和硬體沒有太多的直接關聯。
我讀大學那會,還是用的386,486,586的機器,DOS6.22作業系統,一般電腦連滑鼠都沒有。那年頭,擁有一臺個人電腦還是比較奢侈的事情,也沒有網路,普通人去網咖開始接觸網路,差不多是大學畢業的時候的事情了。
每次都是先看書,把書本上的內容看透,然後在腦子裡醞釀程式的大概流程。然後用筆寫在紙上,然後去機房敲到電腦上進行除錯。因為那時候,自己去上機是按照2元/小時收費的,在當時是有點貴的,為了多一點上機時間,不得不在生活方面上省吃儉用。
現在的學生,網路隨處都有,電腦硬體更不用說了。現在網路資源豐富,有了技術問題,百度谷歌一搜索,全球範圍內的資訊都能獲取到。
跟我們那個時候的軟硬體條件相比,我覺得現在的學生,想學什麼,堅定了信念往前走就是,只要不是太笨,沒有學不好的。
在現在的學習條件下,XXX語言難不難學,根本就不是一個問題。自己的態度和信念才是最大的問題。
-
4 # 我臉上有bug
學C語言的重要性!
只要有微處理器裝置的,都是支援C語言的,從微波爐到手機,均是有C語言技術來推動的!裝置驅動程式和作業系統只能用C語言來編寫。如果你不會,想要自己修改他們可是很難的哦!C語言是唯一一個向你闡述指標的本質的語言。而C#和Java乾脆跳過了指標這個題目。貼近硬體,讓學會程式設計的同時,對計算機的有初步瞭解。可以說是最接近計算機的語言,你說學他有用嗎?C語言功能強大,可以為學習其他語言打下基礎,比如說:C++、java、Python等等。知道了C語言的重要性,其實也就知道了C語言有什麼作用!學習C語言,你可以找一份好的工作,可以轉其他程式語言,可以更好地瞭解計算機!
-
5 # 上半生那些事
1、你是否有基礎?
2、你業餘學,還是全職學?
3、你是否真的喜歡程式設計?
4、你是否堅持下去看、練習枯燥的程式碼?
先思考以上的問題
如果你以上的都能達到,網上很多專業學習的網站,網易雲課堂,騰訊課堂。等等。
世界沒有好學的東西,只有堅不堅持的問題。
網上有句話:精通一個專業領域需要5年時間深耕
-
6 # 會飛的小蝦
c語言是一個程式語言,廣泛應用於底層開發,在大學軟體課程中,屬於基礎,而學習C語言需要勤奮練習。在學習C語言的過程中,一般都是枯燥乏味的,所以我們學習之前,一定要看看書籍,將自己的心思沉澱一下。加強邏輯思維,記住語法規則,理解書上的相關知識。勤加練習,練習錯了要及時更正,不要一直錯誤下去,最好自己記錄到電腦記事本上。如果實在枯燥,可以做一點有意思的,獲得別人的讚揚,這樣有助於自己心態的調整。
-
7 # 周19
初級入門好學的,但學會了也沒成就感,因為仍不會開發應用軟體。
建議入門程式語言選擇python。
-
8 # 劉氓兔
沒有計算機基礎,不建議一開始就學C語言,大多數人都搞不定。C語言,屬於很底層的程式語言,很多功能都要自己取實現,也就代表你需要更多,更廣的知識儲備。
-
9 # 可樂售賣機¥
C語言的話,還是非常好的 可以寫一些程式碼,寫一下小遊戲,還有許多的公司也是需要會C語言的人,而且C語言的話整體來說還是挺容易學會的,只要你認真聽著講課的老師講的話,很快就可以學會。
-
10 # 三Ye紙
C語言屬於高階語言裡面的入門語言,大學裡很多專業的一年級課程都會有這門課,屬於相關專業的入門課程。
但是,不要認為C語言簡單,那就錯了,想要學好,也很難,因為知識點多,而且碎;學好C語言,再學其他語言就容易多了,個人建議C和C++一起學,對比著學,更好,不過要努力學,因為難度挺大!
-
11 # 花花科技網路
你想聽到的結果 無非是難 或者不難
告訴你的事,只要有興趣和毅力 沒什麼會難學
C語言是程式設計入門的基礎 面向過程的語言 它是給你打基礎 打地基 簡單學會 入門並不難
但要深入學習的話 ,看造詣了
一般的人看的懂會用就好了。大部分人工作上用的少了 都去用高階語言開發了 真正純用c的也是嵌入式,搞底層的那些人 然而我們都是搞應用層的人.
所以啊。c入個門不難的
-
12 # 黑馬程式設計師
C語言入門相對比較難
近幾年,程式語言發展迅速,各種適合開發的程式語言都出來了,從而程式語言可選的越多,相對來講,底層實現的語言細節也就越少,入門比較容易。比如:Java、Python都是好入門的。
C語言相對來說就入門比較難了。但是很多程式語言底層實現都是C語言完成的,想徹底瞭解底層是如何實現的,必須要對C語言有一個深刻的瞭解,看懂底層底層的一些實現能讓自己的知識融會貫通,就是傳說中的任督二脈。有志於架構師道路的小夥伴C語言應該也算標配。
並且C語言近幾年的程式語言排行榜上一直穩居前三,所以說現在學C語言也不會差到哪裡去的。
怎麼樣才可以學好C語言?首先,你要對程式語言感興趣,對C語言有興趣,如果你一點興趣都沒有的話,那學起來可能會比較費勁。另外,學習就是一個從不懂到懂得過程,時間上也不一定,只能自己刻苦鑽研!想學好C語言,最重要的一點就是多練習。只有多練習才記得住程式碼,多練才可以知道他的邏輯,方便以後理解。
分享一下C語言學習路線圖 -
13 # C語言答疑課堂
C語言是有一定的難度的,學好C語言沒有捷徑,只有吃苦方能學好。比如C語言程式設計時經常要用到緩衝區,但是有時候又用不到緩衝區,我就以C語言程式設計中什麼時候要用緩衝區,什麼時候無需用到緩衝區來舉例,題主看看C語言難不難學!
我們在C語言程式設計時經常會用到getchar函式或者scanf函式,它們都是從緩衝區中讀入資料的。除了緩衝區,也有一些C語言函式不會用到緩衝區。那麼我的疑問就是在C語言程式設計中什麼時候會用到緩衝區,什麼時候用不到緩衝區呢?
在C語言程式設計中,我們經常會用到緩衝區,比如最常使用的幾個C語言標準IO函式:getchar函式、putchar函式、scanf函式、printf函式等,它們都是從緩衝區中讀入資料的。關於緩衝區的概念我之前已經回答過了,那麼今天來說說C語言程式設計時什麼時候要使用緩衝區,什麼時候不需要使用緩衝區。看完下面的文字後小夥伴們也可以思考:C語言程式設計中,還有哪些場景是是要用到緩衝區,哪些場景一定不能用緩衝區?
一、使用緩衝區的場景在C語言程式設計大部分場景下,我們是要使用緩衝區的,有兩點原因:
1、提高讀入或者輸出資料的效率
假如C語言標準函式getchar在讀入資料時,我要輸入一個字串“12345”,當我輸入字元‘1’時立即給到函式getchar,輸入字元‘2’時立即給到函式getchar,以此類推直到輸入字元‘5’立即給到getchar函式,那麼getchar函式就做了5次讀入操作。如果我輸入的這個字串"12345"先是放在一個緩衝區中,然後C語言標準getchar函式一股腦兒全部讀入,在效率上比立即給到getchar函式要高。
2、給使用者糾正輸入錯誤的機會
如果我輸入一個字元‘1’立即給到C語言函式getchar,但是我發現我輸入錯了,我應該輸入字元‘I’的,我也改正不了了,因為字元‘1’已經被C語言getchar函式吃進去了。如果我輸入的字元‘1’先放在緩衝區中,還沒有給到C語言getchar函式,那麼我還可以在緩衝區中把字元‘1’修改為字元‘I",也就是給使用者糾正輸入錯誤的機會。
二、不使用緩衝區的場景在C語言中,也不是所有的場景都需要緩衝區,有些場景偏偏是不能使用緩衝區的,比如講究實時性的遊戲場景。
我們都玩過跑酷遊戲,當我按下一個鍵的時候遊戲中的人物就得立即做出反應,也就是我按下一個“上”鍵,這個“上”的指令給到C語言中的某個函式時是要立即給到的,這個函式要立即做出處理的。如果此時還用緩衝區的話,那麼“上”的指令就放在緩衝區,C語言的函式還在等待重新整理緩衝區的命令,這遊戲還怎麼玩?
所以在C語言程式設計時,大部分場景是需要用到緩衝區,但是也有的場景一定不能使用緩衝區,你理解了嗎? 初學C語言的小夥伴,看了上述緩衝區的使用場景可能會覺得有點難,但是一旦你入門了且熟練掌握了C語言,別說緩衝區了,什麼字串、指標、陣列、連結串列等也就那回事兒!
-
14 # 嵌入式經驗分享
C語言是一種面向過程的語言,目前主要應用於嵌入式開發,因為桌面開發有更高效的面向物件的開發技術。面向過程就是語言的設計流程是按照事物的時序來進行開發的,因此,當專案非常大的時候,維護起來就比較困難。
1.設計目標是為提供一種能以簡易的方式編譯、處理低階儲存器、僅產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。相對於組合語言,C語言標誌易懂、上手快、可讀性好、易於除錯、修改和移植,而程式碼質量與組合語言相當。一般C語言程式碼只比組合語言程式碼生成的目的碼效率低10%~20%。在當前微控制器效能大幅提升、儲存器大幅拉昇的情況下,這點犧牲換來了極大的提高了開發速度、降低了程式設計難度,完全值得。
2.主要特點簡潔 關鍵字非常少,而且意義明確,易懂易記。比如int是integer,char是character,float等等。
運算子豐富 C語言包含34個運算子,它將賦值、括號等均視作運算子來操作,使C程式的表示式型別和運算子型別均非常豐富。並且運算規則不是那麼嚴格,程式設計非常靈活。比如一個字元char可以不進行轉換直接賦值給整數int,列舉型直接賦值給char或int等,這些操作在高階語言裡如果不進行明確轉換都是不允許直接賦值的。
地址讀寫 在嵌入式系統的應用中,必須要涉及對暫存器的訪問。C語言可以便捷高效的實現這個功能。比如,ARM的CMSIS通用介面程式碼裡,就用C的結構定義了所有片上的暫存器,對這些暫存器的訪問,和訪問變數沒什麼兩樣。如定義一個指向暫存器的變數,
uint32_t regData= *((uint32_t*)0x08000000);
//讀取
x = regData;
//賦值
regData = a;
3.注意事項C語言也是在不斷的發展變化,因此也有許多不同的版本,如C89、C90、C95、C99等。這要求我們在實際應用的時候同樣要注意版本的相容性。這一點很容易被初學者忽略。比如C99支援在函式中任意位置定義變數,但是早期的版本就不支援。
4.難不難學任意事物,只要下功夫,肯定會有收穫。況且現在程式設計師那麼多,說明了只要學習,肯定是很掌握的。當然熟練的程度,要取決於做專案的多少,熟能生巧。建議初學者理論聯絡實際,多做實際,學好它並不難。
-
15 # 技術閒聊
C語言程式設計是否好學,因人而異!不過對於大部分沒接觸過程式語言的人來說,剛學習C語言時,確實感覺比較難。這就好比你當時學騎腳踏車一樣,剛開始嘗試時,會感覺很難學,根本控制不住平衡。C語言也是一個道理,正因為第一次接觸,比較難理解,所以感覺難,等你慢慢體會之後就會發現其實並不難,書本上的內容都是比較基礎的知識,比如運算子、關鍵字、資料型別、常用控制流語句等都是非常基礎的內容,學完C語言之後在學習其它程式語言,你就會發現有很多相似的地方,C語言是程式語言的基礎。
學習C語言最好就是多敲程式碼練習,熟能生巧,對於後找工作也很有幫助。如果只是為了應付考試的話,多看書、多做題確實也能夠考得高分!但是如果為以後找工作準備,這樣的遠遠不行的,這就是所謂的“高分低能”,若以後想找相關程式設計工作,一定要熟練掌握C語言基礎程式設計,常用的語法,以及陣列、指標,陣列、指標是C語言專案程式設計時最常用的,這也是C語言的重點和難點,特別是指標這部分,對初學者來說比較難理解。
一定要多進行專案實戰訓練,只有經過專案實戰才能檢驗是否真正掌握了C語言的基本程式設計技能,當自己完全可以獨立完成一些簡單的專案時,才能表明自己已經掌握了C語言基本開發技能,比如2048小遊戲、貪吃蛇小遊戲、簡單計算器等。
總之,學習C語言並不是很難,但也不是特別簡單,畢竟這是一項程式設計技能,得努力,用心學!
-
16 # 物聯網那點事
好不好學,這個取決於你有沒有恆心與堅持.除去機器語言與組合語言,C語言是所有高階程式語言的基礎老大,也是現在高等院校計算機相關專業的必修基礎課,底層驅動開發,嵌入式linux開發基本都是C語言編寫的,C語言也一直多年穩居所有程式語言排行榜前三,可見C語言的地位與重要性了.它在計算機體系佔據著不可替代的位置.
學習C語言,首先要先了解C語言的基礎語法,先有純理論性的知識基礎,然後多上機除錯,看到效果,然後在學習理論中提高.迴圈漸進地學習基本資料型別,常量與變數,陣列,指標,字串,檔案輸入輸出,運算,關鍵字,語法結構,函式等.堅持不懈,慢慢肯定會看到效果的,再慢慢進階.
當你真正理解掌握了C語言,在使用中會發現很有樂趣的,因為C語言是所有高階語言的基礎,所以以後再去學習其它程式語言是也不是什麼難事了,你會慶幸你學會了C語言.
-
17 # C語言基礎
C語言程式設計好學?學習框架都幫你列好了!你可以感受是不是好學哦!!!
在未來計算機專業講又要迎來一批新生小鮮肉!C語言入門到入土,從長髮飄飄到禿頂的老鐵也越來越多,其中,想自學成才的也佔了不少數;想笨鳥先飛的也佔有不少數。
傳說中的C語言就是那麼刺激和高挑戰
沒有基礎的人也可以直接學習,速度會慢一點
C語言上手可能不是很容易,首先你的花費一週時間掌握最基本的內容。(PS:沒有基礎的人也可以直接學習,速度會慢一點)
常用的基本資料型別(int,float,double,char)的使用,必然包含常用的輸入和輸出函式。程式的三大結構學習:順序結構,選擇結構,迴圈結構。模組化程式設計的函數了解下你再花2周學習些:
指標結構體檔案此時,有些人就在簡歷中得意的自稱"會"C語言了。
但是學到如此程度,在實際程式設計中會經常遇到挫折,主要源自理解不夠深入,僅僅體驗了一下C語言語法而已。
隨意列舉一些新手普遍存在的問題:
不瞭解C語言模組化設計,變數名, 指標概念含混。更換編譯器,程式出現怪異的結果。怎樣定義和宣告C語言全域性變數和函式最好?在C語言中,一個結構不能包含指向自己的指標嗎?什麼是C語言最好的程式碼佈局風格?為什麼不能向接受const char **的函式傳入char **?用縮寫“if(p)”檢查空指標是否可靠?char *指標指向一些int變數,如何跳過?怎樣建立和理解非常複雜的宣告?師傅給我剃個光頭
擁有某項技能的程式設計師的價值,可以用學習技能所需的成本來衡量。你用2周學習達到的這種程度,對於企業就是沒有價值的,因為老闆可以讓一個公司裡任意其他語言的程式設計師經過2-3周的學習就能達到你現在的程度。
C語言的 簡潔緊湊、靈活方便。快速開發對專案有價值,但這不是你的價值,是C語言的價值。所以提高自身價值,也就是不讓別人輕易追上你。以極低的成本替代你。
你只能快跑,進一步學習,C語言語言層面還需要學習下面一些內容:
1.C語言執行機制,編譯過程。2.C語言模組化思想。3.深入理解C語言面向過程的設計思路。4.C語言程式設計思維。5.C語言檔案同步操作上述都是語言層面的,屬於內功。實戰中當然也需要一些更為具體的外功,訓練外功可以從熟悉C語言標準庫開始,這些模組能進入標準庫說明他們足夠好並且在實際專案中足夠常用,列舉一些極為常用的:
1.正則表示式2.Socket網路程式設計3.讀取PE檔案操作4.程序記憶體查詢與修改5.常用的資料結構與演算法老闆我要換種洗髮水
無論練習內功或外功,結合實戰都是最好的訓練方式和檢驗手段,可以根據個人情況以及喜好選擇,如:
網路程式設計借用第三方網站為跳板做實時資訊查詢.(例如身份證查詢)使用第三方庫開發小遊戲案列,例如推箱子,掃雷,連連看,消消樂編寫小應用,個人詞典啊使用C語言做演算法題,ACM,還有各種地方的什麼杯(飛機杯,罩杯)使用C語言做數學建模或者數學計算使用第三方庫做終端模式的播放器OpenGL做圖形處理個人建議選擇小專案進行實訓,有些新手上來就想定一個大目標,做的時候很挫折,往往半途而廢。把小東西先實現,然後最佳化。接下來新增新功能,慢慢迭代把小東西做大。這樣在做的時候,每實現一個小功能你都會有成就感,激勵繼續前進。
可能經過比較漫長的一段時間,你成為了一個熟練的C語言小癟三,還有些高階話題可以繼續學習:
windows程式設計Linux程式設計Qt框架程式設計這些高階話題在開發中經常使用, 它們可以幫你更便利實現功能。
通常自稱一個月光速學了會C語言的人基本都不是天才,只是浮躁,目標定的比較低而已,認知侷限而已。不要太過急功近利,慢慢玩,精進。
當然啦,自學C語言想拔高精進大多都是困難的
沒有良師講解,有些知識點和技術沒法消化自身理解力不夠,稍微高深一些的就看不懂了還有的……時間不夠,自制力也不夠尾言如果你基礎比較差,不妨關注影片教程專欄教程《C語言51課影片教程合集片》:通俗易懂,深入淺出,文章不深奧,不需要鑽研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。世上唯一不能複製的是時間,唯一不能重演的是人生。該怎麼走,過什麼樣的生活,全憑自己的選擇和努力。
-
18 # 學益得智慧硬體
C語言歷史悠久,在眾多的計算機語言中,學起來不算容易吧。
目前很多高校都會在大一的時候開設C語言這門課程,所以他是很多人接觸計算機的第一門語言。
C語言的執行效率很多,在嵌入式領域有很多應用。比如我們家用的路由器、各種智慧家居產品、手環等等,以及所有需要作業系統的地方,都離開C語言。它不像Android或者IOS那樣有良好的人機互動介面,C語言一般都在後臺執行,看不見、摸不著。
學習C語言沒有捷徑可走,最好的學習方法就是一邊看影片、一邊前敲程式碼。大學課堂的教學方式過於理論化,所以一個學期的課程聽完,感覺並沒有什麼收穫。學完每個知識點,都應該配合一段程式碼加深理解。課後還要進行大量的程式設計訓練,可以多去找一些C語言程式設計題,網上很多。
所有知識點學完後,最好能夠再找個專案練手。做專案的好處就是可以把所有零散的知識點結合在一起。純C語言沒什麼好的專案可做,一般都是某某某管理系統。如果整個C語言學完能夠積累5000行程式碼,基本上寫程式碼的水平就可以了。
C語言的影片有很多很多,B站一搜一大把,只要是一邊講課一邊敲程式碼的,學起來效率應該都會不錯。
最後,推薦一下我自己的C語言影片,如果有需要,可以試試看。
-
19 # 華為雲開發者聯盟
C語言是計算機體系結構的基礎,很多新人將C語言作為學習計算機的入門語言。作為新入門的新人,肯定會感到迷茫,很混亂,這時我們就需要適當的引導。本文教你如何滴水不漏地學完C語言,學好基礎知識,把握重點,不斷深入學習。
一、背景
C語言是一門面向過程的、抽象化的通用程式設計語言,廣泛應用於底層開發。它誕生於美國的貝爾實驗室,是由丹尼斯·裡奇以肯尼斯·藍·湯普森設計的B語言為基礎發展而來。UNIX 系統是世界上第一個真正的作業系統。而UNIX 作業系統是用C語言編寫的,在當時這個系統很流行,於是C語言也跟著流行起來。而 UNIX 作業系統是開源的,所以別人要想學習,就要先學C語言。B語言被C語言改寫後,C語言流行了而B語言就被淘汰了。而且後來發現,C語言的確非常好,它是面向過程語言的代表,是有史以來最重要的一門計算機語言。
二、學習方法
C語言是計算機體系結構的基礎,很多新人將C語言作為學習計算機的入門語言。作為新入門的新人,肯定會感到迷茫,很混亂,這時我們就需要適當的引導。對於一門語言的學習,不同的人有不同的方法,不過別人好的學習方法我們是可以拿來借鑑參考的。
(1)看書
看書就是學習基礎知識,學習一門語言首先就是學習基本語法,學會了基礎知識才能有更加深入的發展。除了看一些書籍之外,還可以看一些教學影片入門,畢竟別人講解演示學起來更加輕鬆一點。後文我也會推薦一些好的學習書籍和影片,供大家參考學習。
(2)敲程式碼
想要學習好一門計算機語言,光看書籍學習知識點是遠遠不夠的。在學習知識點的同時一定要自己敲程式碼進行練習。開始學習敲程式碼的時候可以用一些輕便的編譯器,比如Dev C++,熟練了之後可以使用Visual Studio這些較為大型的編譯器。感覺基礎知識掌握熟練之後,就可以開始接觸演算法和資料結構之類的,再然後就可以刷題提高水平了。
(3)練習專案
學習完基礎知識我們的目的還是實踐,所以我們就可以開始練習一些專案了。比如寫一個小的記事本、小遊戲、計算器等經典的小專案。平時面對那些黑框框肯定會感覺到很枯燥無聊,當你做出一個小作品之後,你就會很有成就感,這也會極大的提升你的學習興趣。
三、學習路線
學習一門語言先了解此語言的發展史,早期的C語言功能其實較為簡單,隨著應用和場景的變化,C語言的功能在不斷升級變化,功能也越來越強大。正式學習C語言之前瞭解一下計算機系統的組成以及工作原理也是很有必要的,除此之外還包括資料在計算機內部的儲存方式,以及進位制之間的轉換。
另外很重要的一點就是編譯環境和編譯器的學習,學習之初可以選擇一些簡單易上手的編譯器,隨著不斷深入學習選擇一個與時俱進的編譯器也是很重要的。學習完這些內容之後,我們就可以開始學習C語言基礎知識了。C語言程式設計離不開資料,幾乎所有的程式中都會涉及到資料,其中包含整型、浮點型、字串等等。而C語言中存在著兩種表徵資料的形式:常量和變數。常量可以用來表示資料的值,變數不僅可以用來表示資料的值,還可以用來存放資料。變數是用來存放資料,運算子則是用來處理資料。用運算子將變數和常量連線起來的符合C語言語法規則的式子稱為表示式。
學習完這些之後,就開始接觸結構化程式設計語句。C語言基本控制結構有三種,分別是順序控制、迴圈控制、選擇控制。程式總是為解決某個實際問題而設計的,而問題往往包含多個方面,不同的情況需要有不同的處理,所以這些結構化程式語句在實際應用程式中可以說是無處不在,正確掌握結構化程式設計語句顯得尤為重要。
如果用基本資料型別來定義某些變數,那麼這些變數在記憶體中將佔用各自的記憶體單元,變數之間的制約關係無法體現,不能表現出這些變數之間的關聯性,所以我們把這些變數稱為“離散變數”;但是如果我們需要操作100個或者是更多的數呢,定義100個變數就顯得不太現實,這時我們就引入了陣列。陣列是一組同類型的資料項的有序集合,我們就可以把100個要定義的變數存放到陣列中。
學習指標是學習C語言最重要的一環,能否正確地理解和使用指標是掌握C語言的一個標誌,可以說不懂C語言的指標就不懂什麼是C語言。指標也是C語言中最難學的一部分,學習時除了要正確理解基本概念,還必須要多程式設計,多上機敲程式碼,只要做到這些,指標也是不難掌握的。
前面介紹的都是簡單的資料型別,只能定義一些簡單的資料資訊。對於複雜的資料資訊是無法用前面所學的某個單一資料來定義的,必須使用C語言中提供的複雜資料型別來定義。複雜資料型別是C語言提供的不同於簡單資料型別的又一資料型別,它極大地豐富了C語言對資料資訊的處理能力。
3.1 C語言基礎
第一部分是C語言基礎,包括預處理指令、函式、變數和語句。即使是編寫最簡單的C語言程式,也是會用到這些基本概念。用一個經典的c語言程式,介紹c語言的基本構成、格式,使我們對c語言有個初步認識。
一個C語言程式只有一個主函式,程式執行時從主函式開始,在主函式內結束;函式由函式說明和函式體兩部分構成;函式說明部分包含了對函式名,函式型別,函式引數等的定義和說明;函式體包含了變數說明和執行語句。
3.2 選擇結構和迴圈結構
C語言中有三大結構,分別是順序結構、選擇結構和迴圈結構。
C語言順序結構就是讓程式按照從頭到尾的順序依次執行每一條C語言程式碼,不重複執行任何程式碼,也不跳過任何程式碼。
C語言選擇結構也稱分支結構,就是讓程式“拐彎” ,有選擇性的執行程式碼;換句話說,可以跳過沒用的程式碼,只執行有用的程式碼。
C語言迴圈結構就是讓程式“殺個回馬槍”,不斷地重複執行同一段程式碼。順序結構很好理解,無需過多闡述,簡單概述一下選擇語句和迴圈語句。
其中有兩個選擇語句,if語句和switch語句。
迴圈語句有三種,for迴圈語句,while迴圈語句,do……while迴圈語句。
3.3 陣列
陣列就是一列具有相同型別的資料的集合,這些資料在記憶體中依次挨著存放,彼此之間沒有縫隙。C 語言陣列屬於構造資料型別。一個數組可以分解為多個數組元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列、字元陣列、指標陣列、結構陣列等各種類別。陣列分為一維陣列和二維陣列,當陣列中每個元素都只帶有一個下標時,稱這樣的陣列為一維陣列,一維陣列實質上是一組相同型別資料的線性集合。二維陣列本質上是以陣列作為陣列元素的陣列,即“陣列的陣列”。
3.4 函式
每個C程式都至少有一個函式,即主函式 main() ,如果程式的任務比較簡單,全部的程式碼都寫在main()函式中,但是,在實際開發中,程式的任務往往比較複雜,如果全部的程式碼都寫在main()函式中,main()函式將非常龐大繁雜,結構混亂。我們可以根據程式的邏輯和任務的分工把程式碼劃分到不同的自定義函式中,main()函式更關心業務邏輯和處理流程,需要執行具體任務的時候,呼叫其他的自定義的函式就可以了。引入函式得本質就是把一個複雜的任務分解為子任務,每一個子任務都是一個較小的功能模組,透過實現這些小功能模組來實現複雜的問題,從而使得比較複雜的問題變得簡單。
3.5 指標
沒學指標就是沒學 C 語言!指標是 C 語言的精華,也是 C 語言的難點,破解 C 語言指標,會讓你的 C 語言水平突飛猛進。所謂指標,也就是記憶體的地址;所謂指標變數,也就是儲存了記憶體地址的變數。不過,人們往往不會區分兩者的概念,而是混淆在一起使用,在必要的情況下,大家也要注意區分。關於指標我們需要重點學習的內容有指標與地址、指標與函式引數、指標與陣列、指標陣列以及指向指標的指標和指向函式的指標等等。
3.6 結構體
C 語言結構體從本質上講是一種自定義的資料型別,只不過這種資料型別比較複雜,是由 int、char、float 等基本型別組成的。你可以認為結構體是一種聚合型別。結構體部分重點學習包括結構體的定義方法、結構體的引用方法、結構體陣列、結構體指標的概念及應用、結構體與函式。
在實際開發中,我們可以將一組型別不同的、但是用來描述同一件事物的變數放到結構體中。例如,在校學生有姓名、年齡、身高、成績等屬性,學了結構體後,我們就不需要再定義多個變量了,將它們都放到結構體中即可。
四、學習資料
4.1 經典書籍
《C Primer Plus(第6版)中文版》是非常經典的一本書籍,此書共17章。第1、2章介紹了C語言程式設計的預備知識。第3~15章詳細講解了C語言的相關知識,包括資料型別、格式化輸入/輸出、運算子、表示式、語句、迴圈、字元輸入和輸出、函式、陣列和指標、字元和字串函式、記憶體管理、檔案輸入輸出、結構、位操作等。第16章、17章介紹C預處理器、C庫和高階資料表示。本書以完整的程式為例,講解C語言的知識要點和注意事項。每章末設計了大量複習題和程式設計練習,幫助讀者鞏固所學知識和提高實際程式設計能力。附錄給出了各章複習題的參考答案和豐富的參考資料。
全書共18章,覆蓋了資料、語句、運算子和表示式、指標、函式、陣列、字串、結構和聯合等幾乎所有重要的C程式設計話題。書中給出了很多程式設計技巧和提示,每章後面有針對性很強的練習,附錄部分則給出了部分練習的解答。
本書適合C語言初學者和初級C程式設計師閱讀,也可作為計算機專業學生學習C語言的參考。
4.2 學習影片
現在網路如此發達,網上的學習資源也是非常的豐富。大家可以自行上網查詢適合自己的學習影片,這裡給大家推薦的是大學MOOC上的浙江大學翁愷老師講的C語言程式設計。這位老師講課非常的不錯, C語言基礎理論知識講解完善;循序漸進,從易到難,學習很輕鬆;語言組織嚴謹,風趣,很容易接受,讓你有一直學下去的動力。
4.3 華為雲C++語言實戰進階學習資源(免費)
本課程從基礎語法、 面向物件特性、 異常處理、 模板程式設計基礎、 C++11新特性、STL標準庫容器和演算法、併發程式設計、 C++未來發展趨勢幾大模組解構知識點,實戰場景+學習+練,精煉乾貨講解幫助你快速掌握知識短板。
五、結語
C語言是國際上最流行的、應用最廣泛的高階程式語言之一。時至今日,它依然保持著旺盛的生命力,深受廣大程式設計師的歡迎。作為一種“個性鮮明”的程式語言,C語言既具有高階語言的優點,又有著低階語言的特性。很多大學或者是新入門的程式設計師都將C語言作為學習計算機的入門語言,學好C語言顯得尤為重要。我們一定要學號基礎知識,把握學習重點,不斷深入的學習。
回覆列表
嵌入式領域摸爬滾打10年經驗的老兵來回答
C語言難學其實是個誤傳,不親自動手學習,只聽別人道聽途說是小馬過河,每個人情況都不同。
現在告訴你如何快速學習C語言。
0x01 提升興趣C語言的功能非常強大
往底層說,可以開發裝置驅動(狗哥的主要工作),你可以隨心所欲的控制硬體,想要感測器的什麼資料,隨時編寫程式讀取,甚至可以做到很多破解的功能。舉個栗子,當年去360面試的時候,要求自己DIY一個萬能門禁破解硬體,C語言走一波,遍歷門禁身份ID,分分鐘破解門禁系統。最原始的資料你都可以一覽無餘,這種一切盡在掌握的快感是其他語言難以體驗的。
再往上層,你可以編寫小遊戲,開發後臺服務,甚至可以用來編寫APP。
0x02 名師指點C語言其實不難,主要是遇見難題無人請教,導致興趣不斷消耗殆盡,最終不了了之,狗哥建了一個群,免費幫各位新手答疑解惑,各種C語言的學習過程中的問題都可以提出來,狗哥知無不言,言無不盡,狗哥十年的工作經驗不會讓你失望的,歡迎大家關注!
0x03 練習練習再練習再聰明的人,不實際編碼練習也學不會C語言,你需要的是不斷的編寫程式,執行,找到錯誤,改正後繼續迴圈。實際專案能夠大大加速你學習的程序,狗哥在群裡徵集粉絲們感興趣的C語言專案,帶大家從零開始,構建一個自己的C語言實戰專案,等你來哦!