C語言/C++編程學習—基礎知識講解,新手初學者必看

C語言是面向過程的悠咱,而C++是面向對象的

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

C是一個結構化語言蒸辆,它的重點在于算法和數(shù)據(jù)結構征炼。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進行運算處理得到輸出(或實現(xiàn)過程(事務)控制)躬贡。

C++谆奥,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域拂玻,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或實現(xiàn)過程(事務)控制酸些。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進檐蚜,是因為“ 設計這個概念已經(jīng)被融入到C++之中 ”魄懂。

C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進闯第,是因為“ 設計這個概念已經(jīng)被融入到C++之中 ”市栗,而就語言本身而言,在C中更多的是算法的概念咳短。那么是不是C就不重要了填帽,錯!算法是程序設計的基礎咙好,好的設計如果沒有好的算法盲赊,一樣不行。而且敷扫,“C加上好的設計”也能寫出非常好的東西哀蘑。

小編推薦一個學C語言/C++的學習裙【 六九九,四七零葵第,五九六 】绘迁,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習卒密!裙內有開發(fā)工具缀台,很多干貨和技術資料分享!

一哮奇、分號膛腐,大括號

分號。分號是表達式結束的標志鼎俘,一般表達式后面都要有哲身。寫“;”的時候一定要注意:是否要結束前面的語句 贸伐。注意:if,switch,for,while語句,數(shù)據(jù)類型定義,函數(shù)定義勘天。

if(a>b) /*if語句,沒有分號*/

{...}

while(i+=10,i!=100); /*while語句循環(huán)體為空,依靠逗號語句實現(xiàn)循環(huán)*/

struct a /*結構體數(shù)據(jù)定義脯丝,沒有分號*/

{...}b; /*結構體變量商膊,要有分號*/

int sum(...) /*函數(shù)定義,沒有分號*/

{....}

大括號宠进。大括號是一個語句段的標志晕拆。寫大括號時最好一次寫一對,然后把光標移到大括號里寫 材蹬。避免遺漏实幕。

二、運算符號

“=”與“==”

“=”用于賦值赚导,注意“=”左邊必須是變量茬缩,右邊可以是常量也可以是變量『鹁桑“==”用于判斷兩個量的大小凰锡,左右兩邊可以是常量也可以是變量( 盡量把常量寫在左邊,這樣“==”誤寫成“=”時編譯器就會報錯 )圈暗。 運算表達式有它本身的值 掂为。“=”語句值為“=”右邊的量的大性贝勇哗;“==”語句值為判斷結果,無外乎兩種寸齐,0(表示“==”兩邊不等)1(“==”兩邊相等)欲诺。

(i=1)==(3==4); /*i值為1,整個表達式值為0*/

“渺鹦,”

逗號語句是從左到右計算扰法,整個逗號語句的值為最后一個語句的值

i=(j=2,j+8,j++); /*先計算j=2,值為2,j+8不是運算表達式毅厚,跳過塞颁,計算j++得到整個括號內的值3*/

“/”

“/”兩邊都是整型變量的時候結果也是整型,而且結果遵循向0靠攏的原則 吸耿。

運算符的優(yōu)先級及結合方向

不多說了祠锣,表格一定要背牢。

三咽安、變量

命名

不要吝惜伴网,能說明白性質盡量在變量的名字上說明。避免老是使用一個字母板乙,或者難以理解的變量名 是偷。對于較長的變量命名可以使用宏定義拳氢、類型定義募逞。

#deine UP 0x4800 /*鍵碼的宏定義*/

typedef struct

{....}MEM; /*結構體變量的類型定義*/

類型

注意變量的使用范圍蛋铆。 當不確定變量的范圍的時候盡量選用值域寬的類型。雙目運算符兩邊的變量一般類型要一致放接。不一致的時候需要使用類型轉換刺啦。

上回說的是一些小問題,真正編東西纠脾,學東西還有許多要注意的地方玛瘸。

一、多看代碼

在有一定基礎以后一定要多看別人的代碼苟蹈。注意代碼中的算法和數(shù)據(jù)結構糊渊。 畢竟學C之后的關口就是算法和數(shù)據(jù)結構。提到數(shù)據(jù)結構慧脱,指針是其中重要的一環(huán)渺绒,絕大多數(shù)的數(shù)據(jù)結構是建立在指針之上的,如鏈表菱鸥、隊列宗兼、樹、圖等等氮采,所以只有學好指針才能真正學好C殷绍。對于這些函數(shù)的用法就要牢牢記住。

二鹊漠、要自己動手

編程序是個實干的活主到,光說不練不行。剛開始學的時候可以多練習書上的習題躯概。 對于自己不明白的地方登钥,自己編個小程序實驗一下是最好的方法,能給自己留下深刻的印象楞陷。自己動手的過程中要不斷糾正自己不好的編程習慣和認識錯誤怔鳖。有一定的基礎以后可以嘗試編一點小游戲,文曲星之類的電子詞典上小游戲很多固蛾,照著編作為練習结执。基礎很扎實的時候艾凯,可以編一些關于數(shù)據(jù)結構方面的東西献幔,諸如最經(jīng)典的學生管理系統(tǒng)。之后.....學匯編趾诗、硬件知識蜡感。

三蹬蚁、選擇一個好的編譯器

英文版Turbo C v2.0,最經(jīng)典的C編譯器郑兴,推薦一個win-tc 1.91,支持windows下的編譯器犀斋。

四、關于養(yǎng)成良好的編程習慣

1情连、 在比較復雜的代碼后面要有注釋叽粹。 如果光溜溜一堆代碼,別人就不可能看懂你的代碼却舀,而且也不利于查找錯誤虫几。除非你一直編東西給自己看。能在代碼里說明白的就一定要在代碼里體現(xiàn)挽拔。比如變量名辆脸、函數(shù)名,在命名的時候盡量說明是干什么用的螃诅。

2啡氢、注意語句的嵌套不能過長,一般來說州刽,一段代碼里Tab要少于8個空执。 簡單說就是語句最多8個嵌套。 對于新手來說穗椅,這個標準還要下降辨绊。有一個好習慣是,把主函數(shù)盡量寫簡短匹表。經(jīng)趁趴溃看到別人的代碼是主函數(shù)只有幾行,幾個函數(shù)調用袍镀,而定義全在主函數(shù)外部默蚌。這樣一是減少了主函數(shù)內部的嵌套,二是比較精簡苇羡,容易讀懂绸吸。

3、注意語句的選擇设江。并不是分支語句就用if循環(huán)就用while锦茁、for。在適當?shù)那闆r下switch和do while語句也是要用的叉存。在某些時候码俩,switch語句比if語句更加精練明了,而do while比while少一個循環(huán)歼捏。

一.學好C語言的運算符和運算順序

下面我們通過幾個例子來說明:

(1) 5*8/4%10 這個表達式中出現(xiàn)3種運算符稿存,是同級運算符笨篷,運算順序按從左至右結合,因此先計算5 *8=40瓣履,然后被4除率翅,結果為10,最后是%(求余數(shù))運算拂苹,所以表達式的最終結果為10%10 = 0初斑;

(2)a = 3;b = 5;c =++ a* b 鲜侥;d =a + +* b科雳;

對于c=++a*b來說店归,按表中所列順序剧辐,+ +先執(zhí)行膝但,*后執(zhí)行直晨,所以+ + a執(zhí)行后兼搏,a的值為4泉粉,由于+ +為前置運算连霉,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了嗡靡;而對于d=a++*b來說跺撼,由于a + +為后置運算,所以a值為4參與運算讨彼,使得d的值仍為20歉井,而a參與運算后其值加1,值為5哈误。 這個例子執(zhí)行后哩至,a的值為5,b的值為5蜜自,c的值為20菩貌,d的值也是20;

(3)(a = 3重荠,b = 5箭阶,b+ = a,c = b*5)

例子中的“戈鲁,”是逗號結合運算仇参,上式稱為逗號表達式,自左向右結合荞彼,最后一個表達式的結果值就是逗號表達式的結果冈敛,所以上面的逗號表達式結果為40,a的值為3鸣皂,b的值為8抓谴,c的值為40暮蹂。

(4)a=5;b=6;c=a>b?a:b;

例中的a>b?a:b是一個三目運算,它的功能是先做關系運算a>b部分癌压,若結果為真仰泻,則取問號后a的值,否則取冒號后b的值滩届,因此c的值應該為6集侯,這個運算可以用來代替if…else…語句的簡單應用。

二.學好C語言的四種程序結構

(1)順序結構

順序結構的程序設計是最簡單的帜消,只要按照解決問題的順序寫出相應的語句就行棠枉,它的執(zhí)行順序是自上而下,依次執(zhí)行泡挺。例如辈讶;a = 3,b = 5娄猫,現(xiàn)交換a贱除,b的值,這個問題就好象交換兩個杯子水媳溺,這當然要用到第三個杯子月幌,假如第三個杯子是c,那么正確的程序為: c = a悬蔽; a= b扯躺; b = c; 執(zhí)行結果是a = 5屯阀,b = c = 3如果改變其順序缅帘,寫成:a = b; c = a难衰; b = c钦无; 則執(zhí)行結果就變成a = b = c = 5,不能達到預期的目的盖袭,初學者最容易犯這種錯誤失暂。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入鳄虱、計算弟塞,輸出三步曲的程序就是順序結構,例如計算圓的面積拙已,其程序的語句順序就是輸入圓的半徑r决记,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結構都是作為程序的一部分倍踪,與其它結構一起構成一個復雜的程序系宫,例如分支結構中的復合語句索昂、循環(huán)結構中的循環(huán)體等。

(2) 分支結構

下面我介紹幾種基本的分支結構扩借。

①if(條件)

{

分支體

}

這種分支結構中的分支體可以是一條語句椒惨,此時“{ }”可以省略,也可以是多條語句即復合語句潮罪。它有兩條分支路徑可選康谆,一是當條件為真,執(zhí)行分支體嫉到,否則跳過分支體沃暗,這時分支體就不會執(zhí)行。如:要計算x的絕對值屯碴,根據(jù)絕對值定義描睦,我們知道,當x>=0時导而,其絕對值不變,而x<0時其絕對值是為x的反號隔崎,因此程序段為:if(x<0) x=-x;

②if(條件)

{分支1}

else

{分支2}

這是典型的分支結構今艺,如果條件成立,執(zhí)行分支1爵卒,否則執(zhí)行分支2虚缎,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根

分析:因為當b^2-4ac>=0時,方程有兩個實根钓株,否則(b^2-4ac<0)有兩個共軛復根实牡。其程序段如下:

d=b*b-4*a*c;

if(d>=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(“x1=%8.4f,x2=%8.4f ”,x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf(“x1=%8.4f+%8.4fi ”r, i);

printf(“x2=%8.4f-%8.4fi ”r,i)

}

③嵌套分支語句:其語句格式為:

if(條件1) {分支1};

else if(條件2) {分支2}

else if(條件3) {分支3}

……

小編推薦一個學C語言/C++的學習裙【 六九九轴合,四七零创坞,五九六 】,無論你是大牛還是小白受葛,是想轉行還是想入行都可以來了解一起進步一起學習题涨!裙內有開發(fā)工具,很多干貨和技術資料分享总滩!

else if(條件n) {分支n}

else {分支n+1}

嵌套分支語句雖可解決多個入口和出口的問題纲堵,但超過3重嵌套后,語句結構變得非常復雜闰渔,對于程序的閱讀和理解都極為不便席函,建議嵌套在3重以內,超過3重可以用下面的語句冈涧。

④switch開關語句:該語句也是多分支選擇語句茂附,到底執(zhí)行哪一塊蝌以,取決于開關設置,也就是表達式的值與常量表達式相匹配的那一路何之,它不同if…else 語句跟畅,它的所有分支都是并列的,程序執(zhí)行時溶推,由第一分支開始查找徊件,如果相匹配,執(zhí)行其后的塊蒜危,接著執(zhí)行第2分支虱痕,第3分支……的塊,直到遇到break語句辐赞;如果不匹配部翘,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用响委。

(3)循環(huán)結構:

循環(huán)結構可以減少源程序重復書寫的工作量新思,用來描述重復執(zhí)行某段算法的問題,這是程序設計中最能發(fā)揮計算機特長的程序結構赘风,C語言中提供四種循環(huán)夹囚,即goto循環(huán)、while循環(huán)邀窃、do –while循環(huán)和for循環(huán)荸哟。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換瞬捕,但一般不提倡用goto循環(huán)鞍历,因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while肪虎、do…while劣砍、for三種循環(huán)。常用的三種循環(huán)結構學習的重點在于弄清它們相同與不同之處笋轨,以便在不同場合下使用秆剪,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會明白如何替換使用爵政,如把while循環(huán)的例題仅讽,用for語句重新編寫一個程序,這樣能更好地理解它們的作用钾挟。特別要注意在循環(huán)體內應包含趨于結束的語句(即循環(huán)變量值的改變)洁灵,否則就可能成了一個死循環(huán),這是初學者的一個常見錯誤。

在學完這三個循環(huán)后徽千,應明確它們的異同點:用while和do…while循環(huán)時苫费,循環(huán)變量的初始化的操作應在循環(huán)體之前,而for循環(huán)一般在語句1中進行的双抽;while循環(huán)和for循環(huán)都是先判斷表達式百框,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達式牍汹,也就是說do…while的循環(huán)體最少被執(zhí)行一次铐维,而while 循環(huán)和for就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán)慎菲,用continue語句結束本次循環(huán)嫁蛇,而goto語句與if構成的循環(huán),是不能用break和continue語句進行控制的露该。

順序結構睬棚、分支結構和循環(huán)結構并不彼此孤立的,在循環(huán)中可以有分支解幼、順序結構抑党,分支中也可以有循環(huán)、順序結構书幕,其實不管哪種結構新荤,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現(xiàn)各種算法台汇,設計出相應程序,但是要編程的問題較大篱瞎,編寫出的程序就往往很長苟呐、結構重復多,造成可讀性差俐筋,難以理解牵素,解決這個問題的方法是將C程序設計成模塊化結構。

(4)模塊化程序結構

C語言的模塊化程序結構用函數(shù)來實現(xiàn)澄者,即將復雜的C程序分為若干模塊笆呆,每個模塊都編寫成一個C函數(shù),然后通過主函數(shù)調用函數(shù)及函數(shù)調用函數(shù)來實現(xiàn)一大型問題的C程序編寫粱挡,因此常說:C程序=主函數(shù)+子函數(shù)赠幕。 因些,對函數(shù)的定義询筏、調用榕堰、值的返回等中要尤其注重理解和應用,并通過上機調試加以鞏固嫌套。

三.掌握一些簡單的算法

如用選擇法對10個不同整數(shù)排序(從小到大)逆屡,選擇法排序思路:設有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較圾旨,若a[1]比a[2]~a[10]都小,則不進行交換魏蔗,即無任何操作砍的;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設為a[i])與a[1]交換莺治,此時a[1]中存放了10個中最小的數(shù)廓鞠。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數(shù)中的最小者a[i]與a[2]交換产雹,此時a[2] 中存放的10個數(shù)中第2小的數(shù)诫惭;依此類推,共進行9輪比較蔓挖,a[1]到a[10]就已按從小到大的順序存放夕土。即每一輪都找出剩下數(shù)中的最小一個,代碼如下:

小編推薦一個學C語言/C++的學習裙【 六九九瘟判,四七零怨绣,五九六 】,無論你是大牛還是小白拷获,是想轉行還是想入行都可以來了解一起進步一起學習篮撑!裙內有開發(fā)工具,很多干貨和技術資料分享匆瓜!

for(i=1;i<=9;i++)

for(j=i+1;j<=10;j++)

if(a[i]>a[j]

{temp=a[i];

a[i]=a[j];

a[j]=temp;

}

這些是C/C++能做的

服務器開發(fā)工程師赢笨、人工智能、云計算工程師驮吱、信息安全(黑客反黑客)茧妒、大數(shù)據(jù) 、數(shù)據(jù)平臺左冬、嵌入式工程師桐筏、流媒體服務器、數(shù)據(jù)控解拇砰、圖像處理梅忌、音頻視頻開發(fā)工程師、游戲服務器除破、分布式系統(tǒng)牧氮、游戲輔助等

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市皂岔,隨后出現(xiàn)的幾起案子蹋笼,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剖毯,死亡現(xiàn)場離奇詭異圾笨,居然都是意外死亡,警方通過查閱死者的電腦和手機逊谋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門擂达,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胶滋,你說我怎么就攤上這事板鬓。” “怎么了究恤?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵俭令,是天一觀的道長。 經(jīng)常有香客問我部宿,道長抄腔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任理张,我火速辦了婚禮赫蛇,結果婚禮上,老公的妹妹穿的比我還像新娘雾叭。我一直安慰自己悟耘,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布织狐。 她就那樣靜靜地躺著暂幼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪移迫。 梳的紋絲不亂的頭發(fā)上粟誓,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音起意,去河邊找鬼。 笑死病瞳,一個胖子當著我的面吹牛揽咕,可吹牛的內容都是我干的。 我是一名探鬼主播套菜,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亲善,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逗柴?” 一聲冷哼從身側響起蛹头,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渣蜗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屠尊,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年耕拷,在試婚紗的時候發(fā)現(xiàn)自己被綠了讼昆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡骚烧,死狀恐怖浸赫,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情赃绊,我是刑警寧澤既峡,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碧查,受9級特大地震影響运敢,放射性物質發(fā)生泄漏。R本人自食惡果不足惜么夫,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一者冤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧档痪,春花似錦涉枫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乐纸,卻和暖如春衬廷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汽绢。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工吗跋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宁昭。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓跌宛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親积仗。 傳聞我的和親對象是個殘疾皇子疆拘,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容