作爲一名資深碼農,在軟件行業也拼搏了十多年,這裏跟想學習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語言全套開發》,大家有興趣可以去看看