-
1 # 燈亮幾分
-
2 # 傑小米_
我覺得吧,興趣很重要,記得大一開過C語言的課程,那時候完全不懂老師在說啥,考試都是抄的別人的,直到大三接觸到微控制器,覺得很有意思,一個晶片,加上一些外設電路,然後透過程式設計就可以實現自己的一些idea,剛開始用的組合語言,一些簡單的程式設計用匯編是一點問題都沒有的,而且看上去思路清晰易懂,隨著後面需要控制的東西越來越多,發現彙編的程式設計量太大,只好又去自學C程式設計,自己拿著書本,照著例程一個一個打,把那32個關鍵字弄懂,就算基本入門了吧,C語言和彙編相比,C語言像一個老闆,可以在大局上把握整體,而組合語言更像是一個員工,什麼都要親力親為,剛開始學校用的是51,後來自己又買了stm32微控制器,32的微控制器由於外設比較多,才用的是庫開發,因為之前有過一點C語言基礎,所以學起來也不是困難。好像有點跑題了........,如果你有興趣的學,咋倆可以交流交流
-
3 # 路客171223133
分享一下個人經驗,我是被調劑到計算機專業的,當初收到錄取通知書一臉懵逼,都不知道這專業是學什麼的,之前我連電腦都沒有碰過。
運氣好的是大一碰到了一個特別好的C語言老師,他的教學方式很特別,上課基本不講語法,主要是講程式設計啟蒙和例項程式設計。對於語法老師會在例項中碰到什麼講什麼(從來不會照本宣科)。老師用的例項是一款飛機遊戲,老師講了怎麼在控制檯一幀一幀的做動畫,講了怎麼用簡單字元繪製簡單圖形,怎麼控制飛機移動,怎麼讓飛機發子彈,一步一步的教我們怎麼用C語言做遊戲。
上了四五週課後,老師就讓我們到網站上自己選一款小遊戲,然後試著模仿程式設計,我當時選的是flappyBird(玩過這個遊戲的同學可能比較熟悉)。第一部我是用陣列先搭起來整個遊戲畫面;然後做出牆壁;然後讓牆壁能自左向右移動;繪製小鳥圖形;獲取鍵盤按鍵控制小鳥跳躍。可惜的是大二的時候電腦硬碟損壞,我做的東西全部沒了,之後我才瞭解到有云盤這個東西,然後每次作業都會在雲盤備份,所以在此提醒那些剛入學的同學一定要記得重要的東西備份到雲盤。
之後老師又給我們介紹了easyX繪相簿,我們就不需要讓遊戲執行在控制檯了,可以做一些複雜的動畫出來,然後我又做了一款遊戲叫2048。這裡就不詳細描述了,附上我們老師在知乎上展示的我們的作品:https://zhuanlan.zhihu.com/p/24701550,我們老師的知乎賬號上還有很多關於做遊戲學程式設計的文章。
我現在工作了,方向是嵌入式開發,可以推薦一款開源開發板arduino,它是軟硬體開源的,可以DIY好多有趣的東西,對於學C語言也是很有幫助的。總而言之學程式設計重要的是要實踐,邊做東西邊實踐,然後喜歡演算法的同學也可以在各大OJ平臺上刷題,AC的感覺還是很爽的。
預祝各位同學都能從程式設計中收穫樂趣。
-
4 # 寒門甘露
首先來說,單純的學習C語言並不難,因為C語言的語法其實是很簡單的。我是自學C語 言。該開始學習C語言的時候,經常會因為莫名其妙的逗號,分好,冒號,大括號的錯誤使用導致除錯了半天程式。這是正常過程,在接觸一門新的語言的時候,最開始都不會習慣它的語法,然而這些東西是最簡單的,只要細心多實踐,基本沒問題。然後就是掌握最基本的常用的系統函式,比如說printf(), scanf(), getchar(), strcpy(),localtime()……,會了這些之後就能在電腦視窗中打印出自己的輸出了,這個時候內心還是很激動的。
接下來就要學習C語言的基礎資料型別和資料結構了。學習陣列的使用、不同資料型別的使用,接下來就要學習C語言語法中最不好理解的指標了。學號指標還需要了解計算機的基本硬體構造原理,這一點需要要花時間鑽研和深入瞭解的。當然一時半會也不容易完全理解,需要在不斷地編碼過程中採坑,思考。學到這裡基本的C語言的語法就告一段落了。
接下來,就是要學習資料結構了,這裡的資料結構指的是通用的資料結構,無奈論學習什麼程式語言基本都是要理解了,這就包含鏈式結構、佇列、棧、樹……等等這就不在想C語言那樣好學了。需要在不斷地實現業務編碼的過程中真正的用到這些戶資料結構,並理解這些資料結構為什麼要這麼用的原理。同時還要學習演算法,為了變出更加高效和佔用更少資源的程式,這是不可或缺的一步。總的來說變成就是要在有限的資源下實現最大程度的功能。
相比較而言C語言的學習難度是中等的,學習難度等級排行 html/CSS/JS < python < java < C < C++ .
如果是做後臺開發,建議學習路線:
先學C語言,掌握基本的程式設計方法,還因為作業系統以及底層大多數軟體都是使用C語言開發的,這也有助於瞭解基計算機硬體,推薦譚浩強的《C語言層序設計》《C專家程式設計》《C和指標》;
其次就是要學習資料結構,掌握不同的資料介面適合的不同場景,推薦《資料結構C語言版》其三就是學習演算法,瞭解如何寫出高效的程式碼《演算法導論》;其四要懂得面向物件程式設計,瞭解C++,推薦《C++primer》;其五要懂得設計模式,逐漸積累架構設計的能力;最後就是要會一門指令碼語言,最好是Python,因為Python既可以做指令碼語言使用,也可以使用在資料處理和科學計算方面,語法簡潔,風格優美。 -
5 # 吾是我師
仁者見仁智者見智吧,我學過的這些語言中,我覺得C語言還是很簡單的,C語言唯一比較難理解的就是指標的問題,但是指標是個雙刃劍,如果你真的理解了它,那麼就會知道它的強大。其他的語法方面的內容其實比其他語言要少的多,很多內容都是和作業系統和庫有關的,所以就C語言本身來說還是很簡單的。
過去大學都是要考程式語言都是要考級的,那麼時候有vb和C可以選擇,大部分學校都是選C語言。所以我覺得簡單可能與此有關。
現在很多人首先接觸的語言大部分都是面向物件的,如果你選擇的是python,那麼它確實很容易上手,語法很很簡單,但是所實話,python也並不比C簡單多少,舉個例子,python支援多種傳參形式,而且相互之間還有一些規則要準守,比如順序等等,但是C語言只有兩種,值傳遞和引用傳遞,而且也沒有什麼固定的規則要準守。
當然現在的C語言經過幾次版本修訂後,增加了一些新功能,但是相對其他語言來說要少的多。
特別是和C++和java比。C++和java語法臃腫的我無力吐槽,雖然說增加一些新功能新特性可以方便開發,你可以選擇你需要的,但是從學習方面來考慮的話,是非常頭疼的,每次更新都感覺在學一種新語言的感覺。所以我不太喜歡C++和java,它們抹殺了程式設計的樂趣,讓我們花很多時間來學習新功能,這很無聊。
最後一個小建議,如果你覺得C語言比較難學的話,我建議你一邊學一邊看一些和作業系統有關的書,這可以有助於你的理解。
-
6 # C語言基礎
基礎C學習
C語言語法規則並不是很難,隨便找本教材看看,基本上就差不多了。至於那本書,到沒有什麼明確要求,借鑑借鑑就行,有個學習大綱就行。
深入學習C方向之一:資料結構與演算法C語言描述資料結構的過程可以說是對整個C語言知識的系統小應用。演算法更好的訓練自己的邏輯思維,無論從哪個角度上來說,對自己的程式設計思維提高都是有幫助的。
深入學習C方向之二:小遊戲方向至於為什麼是小遊戲方向,因為小遊戲入手快,實現難度係數也不是很大,為了更高的提高自己的學習興趣,可以接觸下第三方介面庫,例如easyx,這樣軟體介面效果好,學習興趣也搞些,透過大量小遊戲製作,提高自己的學習興趣,順帶鍛鍊思維邏輯。至於做的遊戲可以是:五子棋,掃雷,貪吃蛇,推箱子,電子相簿,拼圖, 萬年曆等等
深入學習C方向之三:開源庫研習開源庫可能算是這個行業最美妙的東西之一,好的開源庫經過完善的開發和驗證,幫助我們解決了開發中遇到的很多通用問題,不需要我們重複發明輪子,但是有時候我們也可以研究開源庫的程式設計藝術,對於我們的提高也是有很大的幫助的。像boost庫,cJson,Apache等。
深入學習C方向之三:系統核心原始碼分析像現在市場大部分系統都是C/C++編寫的,核心原始碼是值得分析的,不過不建議新手介入,難度係數頗大,如果有興趣首推Linux核心原始碼分析,畢竟純C製作,技術含量極其高。
-
7 # 重慶新華電腦學校
萬事開頭難,不如多積累程式設計師的元認知,讓你一開始就有一點點信心,比如對英文的理解,因為程式碼都是英文字母打底,比如邏輯思考能力,你需要理解一個又一個規則,來包裝成模組,一個大專案無非就是一個個小程式封裝起來的……JS語言能力,就是Web端3D視覺化開發的元認知。合理利用3D模型擴充套件、場景搭建工具、技術文件、案例等技術資源,降低學習的門檻~ThingJS 3D demo一點都不難~
-
8 # CuberFan
c語言是純面向過程的語言,直到後來的c++才加入了面向物件的功能,但仍然保留面向過程的程式設計。c語言最大的特點是可以操作記憶體、硬體,靈活使用,缺點是需要注意和學習的細節比較多,陷阱也多。拿指標來說,c語言的精華,但也最難學,陷阱多,一不小心就搞錯,指標一旦指到未知記憶體,可能導致系統災難。新手自學,難度有點大,學校有課程,跟著老師學比較實際點。
-
9 # 事業的彼岸
比較難,很枯燥,我學了一段時間就轉易語言了,有了一點c需要基礎,學易語言很玩是的,還是看你想要幹什麼吧,找工作的話就學c,自己單幹就學易語言
-
10 # 車車貓
任何高階程式語言(包括c語言,但不僅限於c),其實語法方面都不難(畢竟記住格式就好了),難就難在怎麼構思程式本身去解決實際問題,所謂的入門了一種語言,就我的理解就是掌握的該語言的語法。然後怎麼構思程式解決問題也就是通常所說的演算法就只能看修行在個人了。所以也就有了演算法是程式的靈魂這一說法。所以現在學計算機程式語言都是推薦先深入學習一門語言,然後熟練了,精通了,你再去學習另外一門,也就覺得事半功倍,稀鬆平常了,畢竟程式設計思想都是一樣的,不同的只是各種程式語言語法語句的堆疊不同罷了。
-
11 # 我是一個西瓜w
基礎C學習
C語言語法規則並不是很難,隨便找本教材看看,基本上就差不多了。至於那本書,到沒有什麼明確要求,借鑑借鑑就行,有個學習大綱就行。
深入學習C方向之一:資料結構與演算法C語言描述資料結構的過程可以說是對整個C語言知識的系統小應用。演算法更好的訓練自己的邏輯思維,無論從哪個角度上來說,對自己的程式設計思維提高都是有幫助的。
深入學習C方向之二:小遊戲方向至於為什麼是小遊戲方向,因為小遊戲入手快,實現難度係數也不是很大,為了更高的提高自己的學習興趣,可以接觸下第三方介面庫,例如easyx,這樣軟體介面效果好,學習興趣也搞些,透過大量小遊戲製作,提高自己的學習興趣,順帶鍛鍊思維邏輯。至於做的遊戲可以是:五子棋,掃雷,貪吃蛇,推箱子,電子相簿,拼圖, 萬年曆等等
深入學習C方向之三:開源庫研習開源庫可能算是這個行業最美妙的東西之一,好的開源庫經過完善的開發和驗證,幫助我們解決了開發中遇到的很多通用問題,不需要我們重複發明輪子,但是有時候我們也可以研究開源庫的程式設計藝術,對於我們的提高也是有很大的幫助的。像boost庫,cJson,Apache等。
-
12 # 華為雲開發者聯盟
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語言顯得尤為重要。我們一定要學號基礎知識,把握學習重點,不斷深入的學習。
回覆列表
感覺c語言學起來到難不難,因為c語言無非就是資料型別,三個結構(迴圈,選擇,順序),檔案,指標,庫函式大致就這些方面,輕輕鬆鬆就瞭解了,c語言的寬度就夠了,如果想學精,那還的努力,不過可以做為一門入門語言,等多瞭解了幾門語言,再回頭看看自己比較喜歡那門語言。本人之所以喜歡c語言,原因有兩點,1.c語言比較接近底層,可以更加的瞭解計算機的執行;2.其它語言是真的難的裝軟體,配環境變數。