c語言是一種結(jié)構(gòu)化語言拍柒,是大部分編程語言的基礎(chǔ),c語言學(xué)好了屈暗,以后的java拆讯,c#以及更多的編程語言才有可能學(xué)好。
C語言是在國內(nèi)外廣泛使用的一種計(jì)算機(jī)語言恐锦。其語言功能豐富往果、表達(dá)能力強(qiáng)疆液、使用靈活方便一铅、既具有高級(jí)語言的優(yōu)點(diǎn),又具有低級(jí)語言的許多特點(diǎn)堕油,適合編寫系統(tǒng)軟件潘飘。其功能強(qiáng)大,不僅用在計(jì)算機(jī)上廣泛用在電子掉缺,機(jī)械等方面上卜录,而且,所有的windows,Unix,Linux,Mac,os/2眶明,無一例外艰毒,哪一個(gè)不是C語言寫的?很多新型的語言如,C++,Java,C#,J#,perl... 都是衍生自C語言搜囱。掌握了C語言丑瞧,可以說你就掌握了很多門語言。
C是一個(gè)結(jié)構(gòu)化語言蜀肘,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)绊汹。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)扮宠。
C++西乖,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問題域,這樣就可以通過獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制获雕。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣薄腻。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”届案。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣被廓。之所以說C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”萝玷,而就語言本身而言嫁乘,在C中更多的是算法的概念。那么是不是C就不重要了球碉,錯(cuò)蜓斧!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法睁冬,一樣不行挎春。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西豆拨。
既然了解了C語言對(duì)編程領(lǐng)域的重要性直奋,那就應(yīng)該學(xué)懂它。但是C語言偏向底層施禾,各種使用方式都比較原始脚线,因此學(xué)懂它也不是輕松一件事。但也有跡可循:
從這么幾條線入手
變量---流程控制---函數(shù)---指針
數(shù)組---字符數(shù)組---字符串---結(jié)構(gòu)體---鏈表
文件操作---多文件---庫的使用
其他的可以通過這幾條線帶出來弥搞。
如:變量的申請(qǐng)可以引出棧中申請(qǐng)空間邮绿,堆中申請(qǐng)空間
如:結(jié)構(gòu)體+指針,可以做節(jié)點(diǎn)攀例,節(jié)點(diǎn)可以做鏈表船逮,鏈表根據(jù)指針分布可以做:單向鏈表、雙向鏈表粤铭、循環(huán)鏈表挖胃、隊(duì)列。
如:庫的使用有stdio.h這些默認(rèn)寫了梆惯,還有需要手工寫的如:malloc.h,string.h酱鸭,還有圖形庫,還有操作數(shù)據(jù)庫的動(dòng)態(tài)鏈接庫加袋。
學(xué)習(xí)C語言感覺零散凛辣,是因?yàn)槿鄙儇灤┑闹骶€,此其一职烧;其二扁誓,是因?yàn)槿鄙倏陀^世界道理的支撐防泵,導(dǎo)致程序語法出現(xiàn)的莫名其妙。外行人看莫名其妙會(huì)感覺神奇蝗敢,但是神奇意味著不懂捷泞,因此要學(xué)編程,不要再讓它有神奇的感覺寿谴,否則就不懂了锁右。
學(xué)習(xí)編程要有一種悟的精神,它跟佛學(xué)類似讶泰,都需要悟咏瑟。不是背誦幾個(gè)語法而沾沾自喜就算了事的,也不是期末高分痪署,筆試機(jī)試都通過就宣告學(xué)有所成的码泞。
它是一個(gè)持續(xù)研究的過程,一個(gè)反復(fù)訓(xùn)練不斷提升的過程狼犯。當(dāng)你在上層語言中的學(xué)習(xí)遇到了瓶頸余寥,你需要回頭來從底層找原因。否則像linux中的apache,nginx,sphinx悯森,mysql源碼編譯等這些會(huì)讓你暈頭轉(zhuǎn)向宋舷,這時(shí)候你很可能忽略這些看似復(fù)雜的東西其實(shí)都在C語言的編程過程中有影子和啟發(fā)的。
如:讓你源碼編譯瓢姻,其實(shí)就是說那些復(fù)雜的源文件其實(shí)和你寫的.c源文件一樣祝蝠,充其量就是你寫的文件少,它寫的文件多汹来,所以多了編譯順序和編譯規(guī)則续膳,也就是那個(gè)叫Makefile的東西。
所以只要你還在或者想進(jìn)入編程領(lǐng)域收班,C語言總會(huì)有影子,只有理解了它的來龍去脈谒兄,才對(duì)實(shí)際有意義摔桦。了解來龍去脈,這就是在說學(xué)習(xí)C語言的最佳學(xué)習(xí)方法:給一個(gè)不懂計(jì)算機(jī)的老太太解釋為什么要有C語言承疲,以及C語言是什么邻耕,能干什么,里面有什么內(nèi)容等等燕鸽。
那么衍生出來的具體學(xué)習(xí)方法就有且不限于:思考兄世、記錄總結(jié)和靈感、整理筆記啊研。當(dāng)你哪一天躺在床上閉目養(yǎng)神的時(shí)候頭腦里能回顧出C語言的知識(shí)體系并能落實(shí)到程序御滩,然后想講什么就講什么的時(shí)候鸥拧,你才算是學(xué)活C語言了。
總結(jié)學(xué)習(xí)方法
1:按上面的幾條線削解,構(gòu)建出C語言的知識(shí)體系富弦。
2:多思考,很多莫名其妙的問題先記錄氛驮,然后試著去尋找答案腕柜,找那些起碼能說服的了你的理由。
3:多記錄靈感矫废,靈感能讓你的知識(shí)體系中的盲點(diǎn)有畫龍點(diǎn)睛之效盏缤。
4:整理和精簡筆記。筆記一開始會(huì)越來越多蓖扑,后續(xù)就要不斷的精簡蛾找,讓它越來越少,少到幾頁紙...
5:輕松的心態(tài)去學(xué)習(xí)赵誓,不要太功利化打毛。一般功利化太重,基本上都學(xué)不好俩功。
6:堅(jiān)持幻枉,反復(fù),再反復(fù)诡蜓。學(xué)懂C語言不會(huì)一蹴而就熬甫,一蹴而就的那是背誦題目應(yīng)付考試。
這些是C/C++能做的
服務(wù)器開發(fā)工程師蔓罚、人工智能椿肩、云計(jì)算工程師、信息安全(黑客反黑客)豺谈、大數(shù)據(jù) 郑象、數(shù)據(jù)平臺(tái)、嵌入式工程師茬末、流媒體服務(wù)器厂榛、數(shù)據(jù)控解、圖像處理丽惭、音頻視頻開發(fā)工程師击奶、游戲服務(wù)器、分布式系統(tǒng)责掏、游戲輔助等柜砾。
學(xué)習(xí)C語言就是要經(jīng)過以上這樣幾個(gè)反復(fù),才能前后融會(huì)貫通换衬,積累所應(yīng)該掌握的知識(shí)痰驱。C語言是這樣证芭,其他語言也是這樣,從基本抓起萄唇,多動(dòng)手檩帐,多動(dòng)腦,不懂就問另萤,注意平時(shí)積累湃密,還有就是不管做什么事情都是需要堅(jiān)持的。