作為一名資深碼農,在軟體行業也拼搏了十多年,這裡跟想學習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 **a**)
主函式,程式的入口
int fun(int a, int b )
有引數,有返回值的普通函式
基本上,上面都屬於比較簡單的概念,好,下面難度公升級的知識點來了!!!
陣列,c語言中的第乙個難點
陣列舉例
難度一維陣列
int a[5]=
簡單二維陣列
int a[2][3]=, }
複雜字元陣列
char a[3]=
簡單字串產生的
乙個字元陣列
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語言,我在大學之前完全不知道這個專業會學這些電腦語言,所以這對我來說就是個全新的領域。剛開始學...
新手如何學好linux入門指南
本文作為一篇linux新手入門的普通教程吧。有興趣的朋友,可以隨便觀覽一下,高手請飄過!相比windows,linux系統的入門門檻相對較高。打個比方吧,學習windows就像追求你的同桌,當然這個同桌對你而言要是個異性。這樣的追求,輕鬆而易得。不過,關於愛情,有個說法是,輕易得來的不容易珍惜,哈哈...
學好C語言
我想,單純的學c語言的語法,資料結構,相關演算法是遠遠不夠的,c作為一門 低階的高階語言 非常適用於和硬體打交道的場景,而這恰恰又是作業系統做的一部分功能 有人說c的難點和精華就是指標,而指標常用的操作幾乎都是和記憶體相關 同時,對於這樣一門高階語言,很想明白乙個程式如何程式設計機器看得懂的語言,如...