新手如何學好C語言?

作爲一名資深碼農,在軟件行業也拼搏了十多年,這裏跟想學習C語言的萌新童鞋分享下我的個人學習心得!!!

在大學時代,我們大二纔開始學習C語言(起步有點晚啊),第一次看到那本黃黃的譚浩強老師的《c語言教程》,哈哈哈,就是這本了,滿滿的回憶啊!

開學拿到這本書後,心情很激動,因爲以前總是羨慕那種黑客,好像很牛的樣子, 抱着好奇的心理隨便翻開了幾頁看了看,全程一臉懵逼, 因爲以前從來沒有接觸過編程,所以猶如讀天書。沒事,才接觸肯定是這樣的,沒關係,看不懂咱們來硬看!!!

       我學習中記憶很深刻的是纔開始看數據類型,什麼整數,字符類型,浮點數,在這段知識點還勉強可以看懂,只是各種數據類型的範圍還弄不明白,因爲是數字範圍,比如無符號整數,浮點數這種

0 ~ 2^32-1(4 294 967 295)
-2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647)

這種, 搞不清楚!!! 所以就跳過了,然後看到變量賦值這個知識點,我也是混淆了好久,一直搞不明白  爲什麼 

a=100;

不是比較,可能是以前數學思維, = 就是相等的意思。現在才明白,這個是賦值,把值塞到變量a中。。。

        總之,我還是萌新的時候,經歷了和大家一樣的心路歷程,現在看來,這些知識點太簡單了!後面我就反覆抱着書本啃,一點一點的理解,最終70%還是能看懂了,所以在這裏,首先告訴大家,編程的這些語法,概念看不懂,千萬不要害怕, 一回生二回熟,多啃幾遍,逐漸你會發現你漸漸能看懂了,而不是看一遍之後,覺得看不懂,就不在看了,這樣你就會越來越迷糊!!!就這樣課前做好預習,上課聽老師認真講解,我的c語言學的非常順利,比其他同學學的都比較快,但是我們班普遍反饋c語言特別難!後面由於突出的表現,被我們的C語言老師(但是是計算機學院副院長)看中,幫老師代課,哈哈哈!!!

     前面說了這麼多,就是想告訴大家,我在學校學C語言的時候,也是萌新小白一個,並沒有很高的起點,連我竟然都能學好,你也一定可以學好,那麼下面我來跟大家重點說下,學習C語言中應該側重的知識點,C語言的知識點,其實並不是很多。

    先說基礎的語法,那麼數據類型你肯定得記住啊,相當編程界的1+1=2 ,這些太簡單了

數據類型 描述 大小 範圍
char 字符 1字節 -128  ~   127
short 短整型 2字節 -32768 ~  -32767
int 整型 4字節 -2 147 483 648  ~    2 147 483 647
long 長整型 4字節 -2 147 483 648  ~    2 147 483 647
float 單精度浮點型 4字節 -/+3.4e38(精確到6位小數)
double 雙精度浮點型 8字節 -/+1.7e308(精確到15位小數)

 然後變量的賦值,這個必須理解啊:

寫法 含義
a = 2  把2這個值塞到a中,讓a裏面的值變成 2
a==2 這個纔是數學中的比較 兩個是否相等
2 = a 錯誤寫法,  2 是常量,沒法往裏面塞,只能往變量裏面塞

a = b

可以往變量裏面塞

在這兩者的基礎上,你需要理解一些流程,也就是我們寫代碼的基本結構

結構 代碼 說明

循環

for         while       do-while 三種循環

判斷

if  else   條件判斷
選擇 switch case 選擇分支
跳出語句 continue    break 用於上面三種結構

還有一個重要的概念,函數

函數類型  
int   main(int argc ,char **agv) 主函數,程序的入口
int  fun(int a, int b ) 有參數,有返回值的普通函數

 

基本上,上面都屬於比較簡單的概念,好,下面難度升級的知識點來了!!!

   數組,c語言中的第一個難點

數組 舉例 難度
一維數組 int a[5]={1,2,3,4,5}     簡單
二維數組 int a[2][3]={  {1,2,3},{4,5,6} } 複雜
字符數組 char  a[3]={  'a',  'b',  'c'  } 簡單

字符串產生的

一個字符數組

char a[]="abc";   很難理解區別啊

自定義類型,c語言第二個難點

自定義類型 舉例 難度
struct

struct   Stu

{

   int age;

   char name[10];

}

中等
union

union Addr

{

   int age;

   char name[10];

}

複雜,與結構體的區別

指針,C語言的終極難點,大家的噩夢來了,但是這個就是C的精華,掌握這個,才能說你真正的會c語言了

類型 舉例 難度
指針概念

就是一個變量而已, 存放了一個地址值

 

int *a = 0xfffe1824;

char *b = &c

複雜
數組指針

int a[3

int *p= a;

 

int b[3][4]

int (*p)[4] = b;

 

 

int *c[3]

int **p=c;

超複雜
函數指針

int fun(int a,int b)

{

}

 

int (*p)(int ,int );

p = fun;

超複雜

鏈表:把上面指針與結構體學透了,就開始挑戰鏈表吧

鏈表類型 舉例 難度

單向鏈表

單項循環鏈表

struct Node

{

   int data;

   Node * next;

}

中的

雙向鏈表

雙向循環鏈表

struct Node

{

   int data;

  Node * prev;

   Node * next;

}

複雜
鏈表操作 頭插,尾插, 刪除,反向,修改 複雜

     文件收尾,結束你的C語言階段!!!

文件操作 舉例 難度
文本文件 FILE *  fp= fopen("1.txt","r") 中等
二進制文件 FILE *  fp= fopen("1.txt","rb") 中等
文件指針的移動 fseek 複雜

 

其實,個人認爲,大學裏面C語言的知識點真心不多,大家只要掌握我上面列出的知識點,其實就差不多了,核心的我已經用紅色背景標註了,掌握這幾門核心,其實你的c語言應該很不錯了,如果你有不同意見,評論區告訴我!!!

當然我也把這些知識點整理爲了一個課程學習包《一站式C語言全套開發》,大家有興趣可以去看看

https://edu.csdn.net/combo/detail/1024

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章