C的簡介

##1.C語言的基本介紹??

·一個(gè)程序由一個(gè)或多個(gè)源程序組成搂妻,一個(gè)源程序文件中有且只有一個(gè)main函數(shù)。包括預(yù)處理指令`#include`,全局聲明邓厕,函數(shù)定義详恼。

·函數(shù)是C的重要組成部分,包括函數(shù)首部和函數(shù)體挽铁。

·最重要的一點(diǎn)敞掘,也是我學(xué)習(xí)C++后搞混的渐逃,程序總是從main函數(shù)開始執(zhí)行民褂,沒有main函數(shù)是會(huì)報(bào)錯(cuò)的赊堪。

·同時(shí)一個(gè)良好的編程習(xí)慣應(yīng)該包含注釋部分。

##2.程序靈魂——算法介紹??

###2.1什么是算法??

·首先程序是由算法加數(shù)據(jù)結(jié)構(gòu)這兩大類組成的脊僚,當(dāng)然還有一些細(xì)節(jié)遵绰,聲明啊椿访,注釋等。

·算法分兩大類加酵,一類是數(shù)值運(yùn)算猪腕,一類是非數(shù)值運(yùn)算算法钦勘,而不管是什么算法彻采,都是為了在一件事情中找到一定規(guī)律去做朵栖,按計(jì)劃好的去實(shí)現(xiàn)避免出

###2.2算法特性??

·有窮性陨溅,一個(gè)算法應(yīng)該包含有限的操作步驟绍在。

·確定性偿渡。算法中每一個(gè)步驟都應(yīng)該是確定的。

·有零個(gè)或多個(gè)輸入吉拳。

·有一個(gè)或多個(gè)輸出留攒。

·有效性嫉嘀,算法每一個(gè)步驟都應(yīng)該有效執(zhí)行。

###2.3算法基本結(jié)構(gòu)??

·順序結(jié)構(gòu)

·循環(huán)結(jié)構(gòu)

·選擇結(jié)構(gòu)

##3.順序結(jié)構(gòu)及一些C的基礎(chǔ)要點(diǎn)??

###3.1數(shù)據(jù)表現(xiàn)形式??

·常量

????常量分為整型拭宁,實(shí)型杰标,字符型彩匕,字符串和符號常量推掸。而字符常量中有一種轉(zhuǎn)義字符,以'\'開頭登渣,最常見的是'\n'胜茧,表示換行。符號常量例子`#define PI 3.14`??

·變量

????變量必須先定義后使用雹顺。??

·常變量

????'const int a = 1;'??

`標(biāo)識(shí)符

????C語言規(guī)定標(biāo)識(shí)符只能由數(shù)字,字母或下劃線組成廊遍,數(shù)字不能開頭嬉愧。??

###3.2整型數(shù)據(jù)???

·分類

|類型|字節(jié)數(shù)|取值|

| --- | --- | --- |

|int|4|-2^31~(2^31-1)|

|unsigned int|4|0~(2^32-1)|

|short|2|-2^15~(2^15-1)|

|unsigned short|2|0~2^16-1|

|long|4|-2^31~(2^31-1)|

|unsigned long|4|0~(2^32-1)|

###3.3字符型數(shù)據(jù)????

沒啥就一樣

###3.4浮點(diǎn)型數(shù)據(jù)????

·float,double喉前,long double

##4.選擇結(jié)構(gòu)程序設(shè)計(jì)??

這里也沒啥就是if和switch没酣,然后需要搞一下運(yùn)算優(yōu)先級。

·關(guān)系運(yùn)算符優(yōu)先級

????<,>,<=,>=,==,!=,這里前四種的運(yùn)算優(yōu)先級相同且高于后兩種的運(yùn)算優(yōu)先級卵迂。??

·邏輯運(yùn)算符優(yōu)先級

????裕便!高于&&高于||。??

????且非的運(yùn)算優(yōu)先級是最高的见咒,然后是算數(shù)運(yùn)算符,到關(guān)系運(yùn)算符改览,到&&和||下翎,最后是賦值運(yùn)算符。??

·條件運(yùn)算符

????條件運(yùn)算符有一個(gè)條件表達(dá)式恃疯,由兩個(gè)符號漏设?和:組成,必須一起使用今妄,及`表達(dá)式1?表達(dá)式2:表達(dá)式3`???

```

max=(a>b)?a:b??

//等價(jià)于??

if (a>b)??max=a;??

else max=b;??

//同樣也可以寫成??

a>b?printf("%d",a):printf("%d",b)??

```

##5.循環(huán)結(jié)構(gòu)程序筆記??

處理一些需要重復(fù)的問題鸳碧,可以選擇循環(huán)結(jié)構(gòu)盾鳞。

###5.1 while語句????

·while語句就是只要當(dāng)循環(huán)條件表達(dá)式為真,就執(zhí)行循環(huán)體語句瞻离。

```

?#include<stdio.h>??

int main()???

{??

????int i=1,m=0??

????while(i<100)??

????{??

????????m=m+i;??

????????i++;??

????}??

????printf("m=%d",m);??

????return 0;??

}??

```

###5.2 do...while語句??

·特點(diǎn)就是先無條件執(zhí)行一遍循環(huán)體腾仅,然后判斷循環(huán)條件是否成立。

###5.3 for語句??

·for語句是用到最多的循環(huán)語句套利,一般形式是for(表達(dá)式1推励;表達(dá)式2;表達(dá)式3)下面接語句

????表達(dá)式1:設(shè)置初始條件肉迫,只執(zhí)行一次

????表達(dá)式2:循環(huán)條件表達(dá)式验辞,判斷是否循環(huán)

????表達(dá)式3:循環(huán)調(diào)整語句

###5.4 循環(huán)的終止結(jié)束??

·break語句提前終止循環(huán),也可以跳出switch語句喊衫。

·continue語句提前結(jié)束本次循環(huán)跌造,不繼續(xù)走下面的程序,而不結(jié)束整個(gè)循環(huán)。

##6.利用數(shù)組處理批量數(shù)據(jù)??

·數(shù)組是一組有序數(shù)據(jù)的集合壳贪,數(shù)組中每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型陵珍,用一個(gè)數(shù)組名和下標(biāo)來唯一的確定數(shù)組中的元素。

###6.1 一維數(shù)組初始化??

·在定義是賦初始值违施。

????`int a[10]={0,1,2,3,4,5,6,7,8,9};`??

·可以只給一部分賦值

·也可以賦值0互纯,`int a[10]={0,1,2,3,4,5,6,7,8,9};`或者`int a[10]={0}`

·也可以不指定數(shù)組長度

###6.2 冒泡法??

```?

??#include <stdio.h>??

int main()??

{??

?????int a[10];??

????int i,j,t;??

????printf("input 10 numbers:\n");??

????for(i=0;i<10;i++)??

????????scanf("%d",&a[i]);???

????printf("\n");??

????for(j=0;j<9;j++)??

????{??

????????for(i=0;i<9-j;i++)??

????????{??

????????????if(a[i]>a[i+1])??????

????????????{??

????????????????t=a[i];??

????????????????a[i]=a[i+1];??

????????????????a[i+1]=t;??

????????????}??

????????}??

????}???

????printf("the sorted number:\n");??

????for(i=0;i<10;i++)??

????????printf("%d",a[i]);??

????printf("\n");??

????return 0;??

}???

```

###6.3字符數(shù)組???

·如果花括號內(nèi)提供初值個(gè)數(shù)大于數(shù)組長度,則報(bào)錯(cuò)磕蒲。如果初值個(gè)數(shù)小于數(shù)組長度伟姐,則置賦值前面哪些元素,后面空的填\0,即空字符亿卤。

·C語言規(guī)定字符串結(jié)束標(biāo)志,以字符\0作為結(jié)束標(biāo)志愤兵。如果字符數(shù)組中存在字符,前九個(gè)都不是空字符排吴,而第十個(gè)是\0秆乳,認(rèn)為數(shù)組中有一個(gè)字符串,有效字符九個(gè)钻哩。

·在向內(nèi)存中存儲(chǔ)時(shí)屹堰,系統(tǒng)會(huì)自動(dòng)在最后加一個(gè)'\0',那么就有了下面這個(gè)

```??

?char c[]="i am happy";??

//等價(jià)于??

char c[]={"i am happy"};??

//等價(jià)于??

char c[]={'i','','a','m','','h','a','p','p','y','\0'};??

//而不與下面這個(gè)等價(jià)??

char c[]={'i','','a','m','','h','a','p','p','y'}街氢;??

//前三者長度為11扯键,最后一個(gè)為10??

```

·字符數(shù)組輸出不包括'\0','printf("%s",c)'珊肃。

###6.4 一些字符串相關(guān)函數(shù)

·puts——輸出字符串荣刑,其作用是將一個(gè)字符串(以\0結(jié)束)輸出到終端。'puts(str);'

`gets——輸入字符串伦乔,從終端輸入一個(gè)字符串厉亏,得到一個(gè)函數(shù)值。

·strcat——字符串拼接烈和,'strcat(str1爱只,str2)',將str2拼接到str1后面,str1必須足夠大招刹。

·strcpy和strncpy——字符串復(fù)制恬试,'strcpy(str1,str2)',將str2復(fù)制到str1中,從起始位開始疯暑,str1也需要足夠大训柴。'strncpy(str1,str2,2)',將str2中前2個(gè)復(fù)制到str1中。取代str1中前兩個(gè)字符缰儿。

strcmp——字符串比較函數(shù)畦粮。'strcmp(str1,str2)',將兩個(gè)字符串從左至右比,若全部相同則字符串相等宣赔,出現(xiàn)不同预麸,以第一個(gè)不同為準(zhǔn)。結(jié)果由函數(shù)值帶回儒将,相同0吏祸,str1>str2,返回一個(gè)正整數(shù)钩蚊,str1

·strlen——測字符串長度贡翘,不包括\0。

·strlwr——轉(zhuǎn)換小寫

·strupr——轉(zhuǎn)換大寫

##7.指針??

###7.1 什么是指針??

·vc中為int分配4個(gè)字節(jié)砰逻,float四個(gè)字節(jié)鸣驱,char一個(gè)字節(jié),內(nèi)存區(qū)每一個(gè)字節(jié)有一個(gè)編號蝠咆,這就是地址踊东,地址指向的是該變量單元,地址稱為指針刚操。

·'i_pointer = &i;'表示將i的地址存放到i_pointer中闸翅,i的地址是2000,那i_pointer的值就是2000菊霜,這個(gè)2000是i的地址坚冀。這時(shí)i=3,那么*i_pointer=3鉴逞;*i_pointer表示i_pointer所指對象记某。此時(shí),*i_pointer是指針华蜒,指向一個(gè)地址辙纬,i_pointer是指針變量,存放地址的變量叭喜。

###7.2 指針變量定義和初始化

·類型名 * 指針變量名

????'int * p;'??

·**初始化(這是定義加初始化,不是指針變量的賦值過程蓖谢,區(qū)分N嬖獭!)**

????'int * p = &a;'//定義指針變量p闪幽,指向a啥辨。??

**定義時(shí) 指針變量前面的'*'表示該變量為指針型變量,指針變量名是p盯腌,不是'*p'溉知。**

·一個(gè)變量的指針包含兩個(gè)方面,以是以存儲(chǔ)單元編號表示的純地址,一是指向的存儲(chǔ)單元的數(shù)據(jù)類型级乍。

###7.3 字符串指針??

```??

·char *string = "hello world";??

等價(jià)于??

char *string舌劳;??

string = "hello world";??

//把字符串第一個(gè)元素地址賦值給指針變量string,輸出的時(shí)候會(huì)自動(dòng)加1玫荣。??

```

##8.自建數(shù)據(jù)類型??

###8.1結(jié)構(gòu)體??

·聲明

????struct 結(jié)構(gòu)體名??

????{成員列表}甚淡;??

????//成員聲明需要有類型聲明,***類型名 成員名***??

·在聲明同時(shí)定義變量

????struct 結(jié)構(gòu)體名??

????{成員列表??

????}變量名列表捅厂;??

·定義結(jié)構(gòu)體數(shù)組

????struct 結(jié)構(gòu)體名??

????{成員列表}數(shù)組名[數(shù)組長度]贯卦;??

·結(jié)構(gòu)體指針

????p指向一個(gè)結(jié)構(gòu)體變量stu。下面三種用法等價(jià)??

- stu.num(stu.成員名)

- (*p).成員名

- p->num

·枚舉

聲明

????enum [枚舉名]{枚舉元素列表};??

????//枚舉元素不能賦值??

????enum Weekday{a焙贷,b撵割,c};??

定義變量

????enum Weekday??workday辙芍;??

????//???枚舉類型???枚舉變量??

????workday = a啡彬;?

##9。對文件的輸入輸出??

·一個(gè)文件要有一個(gè)唯一的文件標(biāo)識(shí)沸手,文件標(biāo)識(shí)包括三部分:

-?文件路徑

-?文件名主干

-?文件后綴

????'C:\temp\file.dat'??

·映像文件-在內(nèi)存中以二進(jìn)制形式存儲(chǔ)的外遇,不加轉(zhuǎn)換的輸出到外存,就是二進(jìn)制文件契吉,可以認(rèn)為它就是存儲(chǔ)在內(nèi)存的數(shù)據(jù)的映像跳仿。

·文本文件-要求在外存上以ASCII代碼形式存儲(chǔ),則需要在存儲(chǔ)前進(jìn)行轉(zhuǎn)換捐晶。

·fopeen(文件名菲语,使用文件方式);

|文件使用方式|???????含??????義??????|指定文件不存在|

|--|--|--|

|r(只讀)|打開一個(gè)已存在的文件輸入數(shù)據(jù)|出錯(cuò)???|

|w(只寫)|打開一個(gè)文本文件寫入數(shù)據(jù)|建立新文件|

|a(追加)|向文本文件尾添加數(shù)據(jù)|出錯(cuò)|

|r+(讀寫)|打開一個(gè)文本文件讀寫|出錯(cuò)???|

|w+(讀寫)|打開一個(gè)新的文本文件讀寫|建立新文件|

????如果不能打開文件惑灵,fopen函數(shù)將帶回一個(gè)出錯(cuò)信息山上,返回一個(gè)空指針NULL。??

????'if((fp=fopen("file","r"))==NULL)'??

·關(guān)閉文件 fclose(文件指針)英支;

·讀寫一個(gè)字符

????fgetc(fp)從fp指向的文件讀入一個(gè)字符??

????fputc(ch佩憾,fp)將字符ch寫到文件指針變量fp所指文件。??

·讀寫一個(gè)字符串

????fgets(str干花,n妄帘,fp)n是要求得到的個(gè)數(shù),但實(shí)際只從fp所指文件中讀入n-1個(gè)字符池凄,最后加一個(gè)'\0',這樣得到字符串共有n個(gè)字符抡驼,放到字符數(shù)組str中。讀完前遇到'\n'或文件結(jié)束符EOF肿仑,讀入結(jié)束致盟,但遇到的'\n'也將作為字符讀入碎税,函數(shù)出錯(cuò)返回NULL。??

·格式化方法讀寫文本文件

????fprintf(文件指針馏锡,格式字符串雷蹂,輸出列表);??

????fscanf(文件指針眷篇,格式字符串萎河,輸出列表);??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕉饼,一起剝皮案震驚了整個(gè)濱河市虐杯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昧港,老刑警劉巖擎椰,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異创肥,居然都是意外死亡达舒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門叹侄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巩搏,“玉大人,你說我怎么就攤上這事趾代」岬祝” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵撒强,是天一觀的道長禽捆。 經(jīng)常有香客問我,道長飘哨,這世上最難降的妖魔是什么胚想? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮芽隆,結(jié)果婚禮上浊服,老公的妹妹穿的比我還像新娘。我一直安慰自己胚吁,他們只是感情好臼闻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著囤采,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩淳。 梳的紋絲不亂的頭發(fā)上蕉毯,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天乓搬,我揣著相機(jī)與錄音,去河邊找鬼代虾。 笑死进肯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棉磨。 我是一名探鬼主播江掩,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乘瓤!你這毒婦竟也來了环形?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤衙傀,失蹤者是張志新(化名)和其女友劉穎抬吟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體统抬,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡火本,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了聪建。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钙畔。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖金麸,靈堂內(nèi)的尸體忽然破棺而出擎析,到底是詐尸還是另有隱情,我是刑警寧澤钱骂,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布叔锐,位于F島的核電站,受9級特大地震影響见秽,放射性物質(zhì)發(fā)生泄漏愉烙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一解取、第九天 我趴在偏房一處隱蔽的房頂上張望步责。 院中可真熱鬧,春花似錦禀苦、人聲如沸蔓肯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔗包。三九已至,卻和暖如春慧邮,著一層夾襖步出監(jiān)牢的瞬間调限,已是汗流浹背舟陆。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耻矮,地道東北人秦躯。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像裆装,于是被迫代替她去往敵國和親踱承。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348