一個(gè)資深的C語(yǔ)言工程師說(shuō)如何學(xué)習(xí)C語(yǔ)言編程

C語(yǔ)言是面向過(guò)程的,而C++是面向?qū)ο蟮摹?/p>

C和C++的區(qū)別:

C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過(guò)一個(gè)過(guò)程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過(guò)程(事務(wù))控制)。

C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問(wèn)題域,這樣就可以通過(guò)獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過(guò)程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問(wèn)題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。

C與C++的最大區(qū)別:在于它們的用于解決問(wèn)題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語(yǔ)言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒(méi)有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫(xiě)出非常好的東西。

談及C語(yǔ)言,我想C語(yǔ)言功能強(qiáng)大都應(yīng)該知道、應(yīng)用廣泛,一旦掌握了后,你就可以理直氣壯地對(duì)他人說(shuō)“我是電腦高手!”,而且以后若是再自學(xué)其他語(yǔ)言就顯得輕而易舉了。憂慮的是,C語(yǔ)言般博大精深,太難學(xué)了。其實(shí)就筆者認(rèn)為C語(yǔ)言并非是“difficult(困難)”的,只要你能理清思路,掌握它的精髓,配合一套教材。那么學(xué)C語(yǔ)言是一件非常容易且又其樂(lè)無(wú)窮的事。今天本人就與大家一起談?wù)勅绾螌W(xué)習(xí)C語(yǔ)言或者說(shuō)學(xué)習(xí)C語(yǔ)言應(yīng)從哪幾方面著手。

如果你也是在學(xué)習(xí)C語(yǔ)言/C++,小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 二六三,六八八,二七六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開(kāi)發(fā)工具,很多干貨和技術(shù)資料分享!

了解一些基本知識(shí)

一.C語(yǔ)言的背景

就個(gè)人感觸,無(wú)論學(xué)習(xí)哪門語(yǔ)言首先應(yīng)該了解一下自己所學(xué)語(yǔ)言的背景,也可以說(shuō)它的發(fā)展史。

C語(yǔ)言屬于高級(jí)程序語(yǔ)言的一種,它的前身是“ALGOL”。其創(chuàng)始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語(yǔ)言問(wèn)世時(shí)是帶有很大的局限性,因?yàn)樗荒苡糜赨NIX系統(tǒng)上。然而隨著科學(xué)技術(shù)的進(jìn)步,計(jì)算機(jī)工業(yè)的發(fā)展,C語(yǔ)言逐漸脫離UNIX。1987年美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)制定了C語(yǔ)言的國(guó)際標(biāo)準(zhǔn),簡(jiǎn)稱“ANSI C”,從此以后它便成為一種廣泛使用的程序語(yǔ)言。C語(yǔ)言的優(yōu)點(diǎn)很多,主要的有如下四點(diǎn):

1.兼?zhèn)涓呒?jí)語(yǔ)言與低級(jí)語(yǔ)言的優(yōu)點(diǎn),屬于一種中間語(yǔ)言。

2.它是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,非常適合結(jié)構(gòu)化程序設(shè)計(jì)。

3.有較豐富的數(shù)據(jù)類型、運(yùn)算符以及函數(shù)供以選用。

4.直接與內(nèi)存打交道,使修改、編輯其他程序與文檔變得輕松,簡(jiǎn)單。

二.二大語(yǔ)系二種不同的學(xué)習(xí)方法

筆者學(xué)習(xí)過(guò)很多程序語(yǔ)言,例如:C,C++(C語(yǔ)言的擴(kuò)展),QBASIC,VB(BASIC的可視化),javascript,JSCRIPT ,VBSCRIPT,JAVA,ASP,F(xiàn)OXPRO,PERL等等,就本人實(shí)踐所得,其實(shí)高級(jí)程序語(yǔ)言分為兩大語(yǔ)系。一路是以C為主的程序語(yǔ)言,例如:javascript,JAVA等,這類語(yǔ)言在函數(shù)的調(diào)用,程序語(yǔ)句的書(shū)寫(xiě),循環(huán)的控制都極為相似。另一路是以BASIC為首的程序語(yǔ)言,例如:FOXPRO,VBSCRIPT等,此類語(yǔ)言同樣具有相似的函數(shù)調(diào)用,程序語(yǔ)句書(shū)寫(xiě)以及循環(huán)控制,但與C語(yǔ)系是不同的。因此若是您以前是從QBASIC起家的,那么在學(xué)習(xí)C語(yǔ)言前最好是先洗洗腦,千萬(wàn)不要把學(xué)習(xí)BASIC的方法以及思路用在C身上。

講到這里,我想大家對(duì)C語(yǔ)言一定有了感性認(rèn)識(shí)吧!下面讓我們?cè)偕A一下,全方位親密接觸它。學(xué)習(xí)C語(yǔ)言必須從以下四點(diǎn)入手,也就是說(shuō),只要你能掌握這四點(diǎn)的內(nèi)容,那么基本上就大功告成了。

如果你也是在學(xué)習(xí)C語(yǔ)言/C++,小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 二六三,六八八,二七六 】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開(kāi)發(fā)工具,很多干貨和技術(shù)資料分享!

1、入門后多看代碼

在有一定基礎(chǔ)以后一定要多看別人的代碼。 注意代碼中的算法和數(shù)據(jù)結(jié)構(gòu)。 畢竟學(xué)C之后的關(guān)口就是算法和數(shù)據(jù)結(jié)構(gòu)。提到數(shù)據(jù)結(jié)構(gòu),指針是其中重要的一環(huán),絕大多數(shù)的數(shù)據(jù)結(jié)構(gòu)是建立在指針之上的,如鏈表、隊(duì)列、樹(shù)、圖等等,所以只有學(xué)好指針才能真正學(xué)好C。別的方面也要關(guān)注一下,諸如變量的命名、庫(kù)函數(shù)的用法等等。有些庫(kù)函數(shù)是經(jīng)常用到的。對(duì)于這些函數(shù)的用法就要牢牢記住。

2、要自己動(dòng)手

編程序是個(gè)實(shí)干的活,光說(shuō)不練不行。剛開(kāi)始學(xué)的時(shí)候可以多練習(xí)書(shū)上的習(xí)題。 對(duì)于自己不明白的地方,自己編個(gè)小程序?qū)嶒?yàn)一下是最好的方法,能給自己留下深刻的印象。 自己動(dòng)手的過(guò)程中要不斷糾正自己不好的編程習(xí)慣和認(rèn)識(shí)錯(cuò)誤。有一定的基礎(chǔ)以后可以嘗試編一點(diǎn)小游戲,照著編作為練習(xí)?;A(chǔ)很扎實(shí)的時(shí)候,可以編一些關(guān)于數(shù)據(jù)結(jié)構(gòu)方面的東西。之后.....學(xué)匯編、硬件知識(shí)。

3、選擇一個(gè)好的編譯器

GCC或者VS都是一個(gè)號(hào)的選擇

4、關(guān)于養(yǎng)成良好的編程習(xí)慣

(1) 在比較復(fù)雜的代碼后面要有注釋。 如果光溜溜一堆代碼,別人就不可能看懂你的代碼,而且也不利于查找錯(cuò)誤。除非你一直編東西給自己看。能在代碼里說(shuō)明白的就一定要在代碼里體現(xiàn)。比如變量名、函數(shù)名,在命名的時(shí)候盡量說(shuō)明是干什么用的。

(2)注意語(yǔ)句的嵌套不能過(guò)長(zhǎng),一般來(lái)說(shuō),一段代碼里Tab要少于8個(gè)。 簡(jiǎn)單說(shuō)就是語(yǔ)句最多8個(gè)嵌套。 對(duì)于新手來(lái)說(shuō),這個(gè)標(biāo)準(zhǔn)還要下降。有一個(gè)好習(xí)慣是,把主函數(shù)盡量寫(xiě)簡(jiǎn)短。經(jīng)??吹絼e人的代碼是主函數(shù)只有幾行,幾個(gè)函數(shù)調(diào)用,而定義全在主函數(shù)外部。這樣一是減少了主函數(shù)內(nèi)部的嵌套,二是比較精簡(jiǎn),容易讀懂。

(3)注意語(yǔ)句的選擇。并不是分支語(yǔ)句就用if循環(huán)就用while、for。在適當(dāng)?shù)那闆r下switch和do while語(yǔ)句也是要用的。在某些時(shí)候,switch語(yǔ)句比if語(yǔ)句更加精練明了,而do while比while少一個(gè)循環(huán)。

很多人對(duì)學(xué)習(xí)C語(yǔ)言感到無(wú)從下手,經(jīng)常問(wèn)我同一個(gè)問(wèn)題:究竟怎樣學(xué)習(xí)C語(yǔ)言?我是一個(gè)教師,已經(jīng)開(kāi)發(fā)了很多年的程序,和很多剛剛起步的人一樣,學(xué)習(xí)的第一個(gè)計(jì)算機(jī)語(yǔ)言就是C語(yǔ)言。經(jīng)過(guò)這些年的開(kāi)發(fā),我深深的體會(huì)到C語(yǔ)言對(duì)于一個(gè)程序設(shè)計(jì)人員多么的重要,如果不懂C語(yǔ)言,你想寫(xiě)底層程序這幾乎聽(tīng)起來(lái)很可笑,不懂C語(yǔ)言,你想寫(xiě)出優(yōu)秀高效的程序,這簡(jiǎn)直就是天方夜譚。為什么C語(yǔ)言如此重要呢?

第一:C語(yǔ)言語(yǔ)法結(jié)構(gòu)很簡(jiǎn)潔精妙,寫(xiě)出的程序也很高效,很便于描述算法,大多數(shù)的程序員愿意使用C語(yǔ)言去描述算法本身,所以,如果你想在程序設(shè)計(jì)方面有所建樹(shù),就必須去學(xué)它。

第二:C語(yǔ)言能夠讓你深入系統(tǒng)底層,你知道的操作系統(tǒng),哪一個(gè)不是C語(yǔ)言寫(xiě)的?所有的windows,Unix,Linux,Mac,os/2,沒(méi)有一個(gè)里外的,如果你不懂C語(yǔ)言,怎么可能深入到這些操作系統(tǒng)當(dāng)中去呢?更不要說(shuō)你去寫(xiě)它們的內(nèi)核程序了。

第三:很多新型的語(yǔ)言都是衍生自C語(yǔ)言,C++,Java,C#,J#,perl...哪個(gè)不是呢?掌握了C語(yǔ)言,可以說(shuō)你就掌握了很多門語(yǔ)言,經(jīng)過(guò)簡(jiǎn)單的學(xué)習(xí),你就可以用這些新型的語(yǔ)言去開(kāi)發(fā)了,這個(gè)再一次驗(yàn)證了C語(yǔ)言是程序設(shè)計(jì)的重要基礎(chǔ)。還有啊,多說(shuō)一點(diǎn):即使現(xiàn)在招聘程序員,很多考試都是考C語(yǔ)言,你想加入it行業(yè),那么就一定要掌握好C語(yǔ)言。

這些是C/C++能做的

服務(wù)器開(kāi)發(fā)工程師、人工智能、云計(jì)算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺(tái)、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開(kāi)發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自http://blog.csdn.net/xugangwen/article/details/44811783...
    扎Zn了老Fe閱讀 13,089評(píng)論 1 142
  • 江一燕是我很喜歡的女演員之一。在這本書(shū)中我了解到了她的人生觀,價(jià)值觀和愛(ài)情觀。得到一些收獲,希望能與你分享。 ...
    樸智旻要加油哦閱讀 418評(píng)論 0 0
  • 受邀參加先生公司的年飯,感觸頗深。作為一個(gè)體制內(nèi)生活的人,看到先生公司的人為了夢(mèng)想而奮斗,驚嘆于他們的敬業(yè)精神,...
    紫蘇荊芥閱讀 213評(píng)論 0 0
  • 今天突然很想寫(xiě)一些東西 不知道從何說(shuō)起 那就說(shuō)說(shuō)你吧 今天在洗漱間洗衣服 沒(méi)有聽(tīng)歌 所以腦子里有很多亂七八糟的東西...
    不然就叫帥氣的昵稱吧閱讀 183評(píng)論 0 0
  • 對(duì)于網(wǎng)站的SEO推廣而言,用戶體驗(yàn)可以說(shuō)是一個(gè)不可忽視的根基。一個(gè)網(wǎng)站如何沒(méi)有良好的用戶體驗(yàn),自然不會(huì)提升流量更不...
    5cf41851bf39閱讀 421評(píng)論 0 3

友情鏈接更多精彩內(nèi)容