應該把C語言學習到什麼程度?

題主大一cs專業,第一學期剛結束,簡單入門了C語言語法篇,感覺並沒有什麼收穫,下學期學數據結構,請問我應該趁這個寒假更全面得學C語言還是去看數據結構?更或者學一門其他語言還是看一些經典書?學校安排這樣對C語言的學習有什麼大意義嗎?應該把C語言掌握到一個怎樣的程度?


取決於你的見識和視野。

1、你如何看待這個程序開發語言工具?

2、這個工具用得熟不熟?

3、這個工具可用於哪些場合?不同的場合下,如何使用這個工具?你見過幾個場合?你仔細調查過了沒有?你做過幾個?例如,嵌入式系統、操作系統、資料庫引擎、C/S,數值計算(intel庫),並行計算,圖形處理等等。

4、c89和c99是如何規定c的語法(用法),為什麼?

5、如何設計一門計算機語言(計算機體系結構、編譯原理)

過了好幾個月啦,還是直接給答案吧,這是一個多維度的問題,學習c語言至少有三個維度:

第一個維度,c語言本身的掌握,通過一些小例子、典型的題目,掌握c語言的語法。

第二個維度,通過c語言從應用層體驗操作系統。c語言的發明,與操作系統開發有莫大的關係。所以,學習一下unix環境高級編程,能夠對整個計算機系統有相當的直觀的了解。

第三個維度,演算法設計。無論什麼事情,大概總是要追求多、快、好、省的。就計算機程序來說,佔用內存少、運行速度快,這是基本要求。事實上,應該先學基本的演算法設計,並且只用數組和鏈表完成編程。有了一定的編程動手能力後,再學習數據結構。不要一開始就學數據結構,否則的話,老是編不出程序來,可能會失去學習的興趣。

第四個維度,如果有進一步追求的話。那麼具體數學非常有必要

第五個維度,計算機系統結構、並行計算、分散式計算、資料庫概念與原理。


取決於你的發展方向。

如果是軟體方向(底層軟體除外),學C重在計算機硬體原理(CPU和內存優化調度)和體系結構。對象化思想、指針等高級功能可以粗略看看即可。因為最終你的主要語言是JAVA或者DOTNET下的語言。

如果是硬體驅動方向(包括底層軟體),或者硬體開發(包括單片機),則需要學好C。因為C和C++在基礎上有很強的通用性。


謝邀。

Q:

題主大一cs專業,第一學期剛結束,簡單入門了C語言語法篇,感覺並沒有什麼收穫

A:

一個學期的時間,大概有四個月。

四個月學 C 語言,說沒收穫?我怎麼感覺是你沒有用心去學呢。

我當年學 C 語言,花了一年的時間,做各種大作業跟項目,依然感覺時間太少了,自己學的還不夠多,不夠深。

Q:

下學期學數據結構,請問我應該趁這個寒假更全面得學C語言還是去看數據結構?

A:

沒有衝突,學數據結構,是在強化 C。

Q:

或者學一門其他語言還是看一些經典書?

A:

如果天賦秉人,能夠在短時間內掌握一門語言,剩下的時間請選擇一門感興趣的技能專研。

推薦技術有:

  • 前端:Html、Css、JavaScript、框架(Vue、React、Angular 等)
  • 伺服器端:Java(SSH)、PHP(Laravel)
  • 手機客戶端:Android、iOS

相關書籍,完全可以在知乎找到答案。

Q:

學校安排這樣對C語言的學習有什麼大意義嗎?

A:

方便為後續課程打好理解基礎:

  • 數據結構學習,需要 C 語言代碼撰寫基礎
  • 編譯原理學習,需要有代碼運行的基礎
  • ……

Q:

應該把C語言掌握到一個怎樣的程度?

A:

看你指的什麼。

如果指語法:

  • 能夠不用翻書,便看懂代碼即可

如果指演算法:

  • 那就多用 C 語言解題吧,最好報名參加下 ACM

如果後面僅僅只是想開發東西:

  • 按照語法,能看懂代碼就好了。
  • 然後,參照第三個問題的答案學習其他語言。


KR習題全做完吧。


C遠不止語言而已,關鍵是編譯、鏈接、運行這一大坨概念。你把這些弄懂了,包你鼠兵,啊不,C語言不戰自退,拱手而翔。。。


我就直接回答一下題主提出的問題,放點乾貨

一、應該趁這個寒假更全面地學C語言還是去看數據結構?

如果C語言語法已經比較清楚(如指針),建議學習數據結構。題主感覺沒有收穫主要可能是因為掌握的知識較少,不知道能使用在何處。

C語言的學習是伴隨著應用和對自己的挑戰進行的(有些人學完了指針都不知道能做些什麼)

學習數據結構可以讓你

①提前了解如

  1. 棧和隊列
  2. 鏈表
  3. 散列表
  4. 二叉搜索樹(Binary Search Tree)

  5. 紅黑樹

等常見的數據結構。

②更方便地實現一些演算法

大致了解之後還可以上Hackerrank上的Solve Data Structures Code Challenges刷一些題,來考察自己的掌握程度。

二、或者學一門其他語言還是看一些經典書?

可以考慮學C++、Java(新手上路可以並推薦使用《C++ Primer》)

亦或是學一門腳本語言(如Python3

建議自己也要對一些常見的演算法有所了解(如搜索、動態規劃),題目什麼的推薦Hackerrank上的Solve Algorithms Code Challenges(嗯,比較基礎~)。

三、學校安排這樣對C語言的學習有什麼大意義嗎?

作為一名學習CS的學生,學習C、C++、Java大多是作為基礎課(編程入門課開設的),不僅在以後的工作上能用到,也是一種對思維的鍛煉。

四、應該把C語言掌握到一個怎樣的程度?

依我之見,學會指針、字元串、結構體啥的就差不多算入門完畢啦,可以學別的語言啦~


老師教編程,就是教一下基本語法和基本演算法,想要進一步學習一門語言,必須跟實際的開發結合起來,深入學習要靠自己,比如找些開源的小項目學習一下人家寫的代碼。多看代碼是一個很好的學習方法,看了自己再嘗試修改。

不過按照現在的市場行情,c語言就學好語法和基本演算法好了,似乎沒有必要花太多時間在上面。有空的話不如開始自學c++。

c++的坑比較大,語法就要複雜的多,還要學習設計模式,重構這些開發技巧,時間真是不夠用啊! 除了c++,還有諸如java,python等,都很有市場價值。


C語言相對來說還真是個很簡單的語言。我知道肯定會有一大幫人反對我。不過我覺得大部分人舉的例子估計都不是這個語言本身的問題,而是C語言太靠近硬體特性帶來的一大堆複雜問題。

不管什麼語言的學習都可以用一句話概括——無他,唯手熟爾。

你只要以後經常用C語言,熟練不是問題,但是你會發現很多問題不是一個語言能解決的問題。


C語言至少要掌握到能做大作業的水平,最好到能給別人做大作業的水平。

BTW. 開房什麼的還是不要去,潔身自好很重要.


我也是16屆新生,正在努力多閱覽一些c語言實現的經典小程序,如貪吃蛇等一些小遊戲,還有通過位運算的加密文件程序,還有一些基本的演算法可以開始學了。另外,在學c++。

覺得語法什麼的速度學,把大量時間用於實踐

,這才是生才之道。

若發言有誤,請前輩們輕噴。


這門大一課我這專業不叫c語言,而叫:

程序設計基礎

所以根本不是為了學c的各種語法和特性,而只是利用c來讓同學明白什麼是寫代碼。

回到題主問題,你只要認為你大概懂得了程序設計到底在設計什麼,就沒有必要去死摳c本身,除非你認為你將來會非常頻繁地使用到c的深層的特性。

ps:這門課我校對轉專業的學生用的是python,我覺得也無傷大雅,無非想要教的是輸入輸出,數組,循環,函數等這些所有語言都會用到的基礎內容。


一知半解就夠了


可以學一學 Linux C,順帶學一下操作系統層面的知識。


感覺沒收穫是因為你沒經驗。多寫點代碼就好了。比如搜索c語言有哪些可以練手的小項目之類


推薦閱讀:

學習 C 語言需要數學基礎嗎?
怎樣提高自己代碼可讀性?
大學裡教的C語言,與知乎上說的入門編程要學的C語言是同一個東西嗎?
sizeof(list) 如何區分list是變數還是類型?
學c語言應該買什麼樣的電腦?

TAG:C編程語言 | 計算機專業 |