-
1 # refreshingbreeze18
-
2 # kevinlq
瀉藥。
首先肯定要說:C語言必須要學習。
學好C語言,走遍天下都不怕!
為什麼要學
舉個栗子:linux系統就是用C語言來開發的,linux系統大家都是用過吧,如果沒有用過,那麼windows大家都用吧,核心也是用C寫的,就像我們使用的android系統手機,android的核心就是linux,所以也是用C開發的。
為啥這些大型系統和專案都用C語言開發呢?一句話“效率高”。C語言的執行效率是出了名的。
所以如何一個系統對效能和效率要求非常高,那麼底層可能需要使用C語言來開發了。
如何學習下面開始簡單說說如何學習C語言。
一般學校中的專業都會安排C語言,在學校中學習時安排好自己的學習時間,以及學習計劃。可以跟著課程走,將基本的資料型別,流程控制語句,函式,陣列,指標,以及常見的資料結構搞懂。
接著要動手多做專案了。專案部在乎大小,剛開始做專案多動手。
多看一些開源的專案,多看看github上的開源專案:
如何堅持多做一些東西,多分享,多寫部落格進行分享,然後會得到別人的鼓勵和支援,自己會更加充滿動力。
-
3 # 難以置信a
不是必須的。除非你寫驅動系統或是類似的系統核心程式碼,或者就是像Nginx似的非常注重效能的應用程式。
如今絕大部分程式設計師都寫web應用吧,肯定是不用c語言了。極其罕見的情況下用c寫JNI或是V8擴充套件而已。也就理論上存在這種可能性。
-
4 # 玩著學程式設計
C語言可以作為學習計算機程式設計語言的入門語言,是編寫作業系統的首選語言,與計算機硬體打交道時靈巧且高效,可以更好的瞭解計算機;
C語言具有現代高階程式設計語言的基本語法特徵,常用的面向物件程式設計語言例如C++和Java,其基本語法源於C語言,許多C語言編寫的軟體系統需要維護,用於要求程式高速執行領域的編寫,例如微控制器程式、嵌入式系統軟體和通訊程式等;
所以說,每個人都應該學習C語言,學習程式設計,學會思考;
以前學習 C語言的時候,看的是 “ 如鵬網 ”的影片教程——《C語言也能幹大事》系列,挺不錯的,透過開發超級瑪麗,飛機大戰,吃金幣等經典小遊戲,以及透過用C語言來開發網站,無需硬體開發校園一卡通的系統來講解C語言的知識點,沒想到C語言還可以這麼學,做出來的專案挺有成就感的,特別的炫酷;
具體的可以到 如鵬網 官網上去了解一下,口碑不錯,基本上都是慕名而去的;
-
5 # 素食的貓
C語言和其它計算機語言有很大的區別,這主要是計算機科學的大多基礎教材,如資料結構,作業系統,大多數演算法的描述,都是C語言或類C語言描述的,這也導致很多面試或研究生複試題目都是C語言描述的。所以,C語言做開發或許路線很窄,但學業深造對個人意義重大。
-
6 # 夏曹俊
c語言對於初學者不是必學的,我也不建議它做入門語言,除非你做純硬體,但對於熟練使用了一門開發語言的同學,如果還要學一門有價值的技術,那c語言首當其衝。深入學習一下c語言讓你對底層程式的執行有更深刻的理解。
-
7 # 交易沒有銀彈
你如果有時間,我覺得c/c++應當作為第二語言,第一個回答很真實,現在許多軟體採用c/c++,足見其強悍,不僅在於效能,還有他對硬體的管理和操縱,你可以認為它是最接近硬體的語言(除了彙編),c/c++是許多軟體基石,為你以後研究其他優秀產品提供基礎,另外,想做硬體開發也得用他,未來物聯網智慧家居相信c/c++會佔據很重要一塊,前途還是不錯的
-
8 # 偶爾來逛逛隨便來瞧瞧
一定要學,但不建議作為入門語言。目前流行的如python/go這些,都與c有很深的關係,go甚至可以和c混寫,是提高效能的必須手段。入門級語言我更推薦java或c#,打好基礎後回頭學指令碼,如python,elixir甚至typescript 再回頭啃c,曲線為中 易 難。
-
9 # 黑馬程式設計師
從系統學習的角度考慮學習C語言還是很有必要,畢竟懂得底層功能的實現,對於系統的瞭解軟體框架還是有幫助。現在很多主流的程式語言的底層大多是基於C語言構建出來的,瞭解底層的實現,對於深刻了解底層程式碼的實現有非常強烈的借鑑意義。
另外,從歷年的程式設計榜單也能看出來C有必要學習!
歷史排名(1988-2018)
C語言一直排名在第一、第二的位置,和Java一直不相上下!
程式語言“名人榜”( 2003-2017)
第一階段知識點對應的學習教程:
C語言基礎影片
C++基礎影片教程
第二階段知識點對應的教程:
c++入門教程
第三階段知識點對應的教程:
c++深入淺出教程:http://pan.baidu.com/s/1c049lk
第四階段知識點:
知識點對應的教程:
1、伺服器開發之linux基礎程式設計
2、伺服器開發之linux系統程式設計
3、伺服器開發之linux網路程式設計
4、linux嵌入式開發+驅動開發
第五階段QT介面開發教程
-
10 # C語言答疑課堂
C語言作為一門比較悠久的程式語言,是程式設計師必須要掌握的一門語言,是軟體開發中經常會用到的一門語言。之所以要掌握這門語言理由如下:
一、直接用C語言做專案C語言是一種程式語言,與Java、C#等其他高階語言相比,C語言是一門更加貼近硬體的語言。我們都知道,任何一款軟體執行的本質都是在操控硬體,如果有一門語言能夠直接操控硬體而且你又學成了,你自己都感覺自己很牛!
不過使用C語言直接操控計算機硬體也有一個麻煩的地方,就是什麼細節都要你自己去思考並解決。比如對於很珍貴的儲存空間,你的C程式必須要考慮好如何使用哪怕是一個位元組。使用C語言開發出的程式程式碼可沒那麼多豐富的第三方庫給你用。
C語言難學,但是一旦學成了並且熟練地使用,那麼你將是不可替代的。
二、間接用C語言做專案有的人說我就是不學C語言,因為太麻煩太難了,你看Java多好學啊,C#多好學啊,而且Java等有好多的包啊、庫啊可以呼叫,還不用我考慮垃圾回收,多方便!
可是話雖這麼講,但Java等語言也不是所有的問題都能解決的,關鍵時候還是得呼叫C庫,不然Java等也不會有Jini機制了。比如涉及到音影片處理時,Java等就會顯示出力不從心的感覺,最終還得呼叫C程式或者C庫來處理,比如呼叫FFmpeg來處理音影片,而FFmpeg就是用C語言編寫的。
-
11 # 薛定諤的小貓貓
首先,這個問題的答案是肯定的,在大學計算機和軟體等相關專業課程裡面也是一門必修課,而且通常是充當第一門程式語言的角色。對於計算機相關同學來說,入門語言的選擇非常重要,它可能影響你的整個職業生涯。我就不列舉那些老生常談的廢話了,下面我就來談談為什麼要學習C語言。
首先,C語言是美國的貝爾實驗室研究員Dennis Ritchie在1972年基於之前B語言設計發明的,最開始在Unix作業系統上使用,並伴隨Unix作業系統的興起而流行,後來隨著計算機的不斷髮展,開始移植到其它平臺上,很快得到廣泛的使用。論流行程度,C語言絕對佔有較高的地位,長年穩居第二名,下面是2018年12月份的程式語言排行榜
可見C語言的流行程度和使用者量,在過去40多年裡也沒有被淘汰掉,可見它確實有值得去研究的地方。
其次,從C語言本身的特性來講,它更值得學習。雖然C語言是一門比較難學的程式語言,但是它提供了對作業系統和記憶體的精準控制,高效能的執行環境,原始碼級的跨平臺編譯等優點,才是我們必須學習和使用C語言的理由。下面我簡單列舉一些C語言的優點
結構化程式設計結構化程式設計,使得程式碼流程簡單清晰,便於開發、除錯、測試。
對底層的訪問方便C語言可以直接對記憶體進行操作,允許訪問物理地址對硬體進行操作,一般嵌入式開發程式設計就需要使用C語言。
執行效率高程式碼的執行效率高,在大型系統中如果對效能要求高的話,一般都是C語言結合C++進行開發的,例如在深度學習模型的預測階段,為保證程式的效率一般使用C語言開發。C語言生成的目的碼一般只比彙編程式生成的目的碼效率低10%到20%。
如果想要在軟體程式設計方面有較長遠的發展,C語言是一門比較適合的入門語言,透過學習C語言,對計算機底層程式設計更加了解,這是有可能在學習其它語言時收穫不到的。
-
12 # 比克大魔王50
SOHO圖形軟體可以把文字變為向量的,隨你縮放,無損想要多大都行。色彩管理比肩PS。為什麼不用SOHO圖形軟體?這軟體色彩和明暗方面的調整,變形,文字,圖層合併都比PS強一大截。經典工具都有,網上能搜到的濾鏡也都有,甚至有延伸了不少。SOHO圖形軟體,簡直就是PS各版本優點大集合,而且更方便。來一發試試唄?而且這還是正版軟體,全免費,可商用,圖片無暗記。比PS好多啦
-
13 # 華為雲開發者聯盟
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語言學好以後再去學習其他語言就比較容易了。以後不管幹什麼,做網頁還是做系統還是做app或者其它的,都需要用到c寫基礎。所以說,如果作為計算機專業學生,不但要學c語言,而且更應該把c語言學透。謝謝。