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)牧氮、游戲輔助等