C語言再入門——基礎(chǔ)知識模糊點快記

1.在最新的C標準中,main函數(shù)前的類型為int而不是void,C程序一定是從主函數(shù)開始執(zhí)行的亏镰。

2.代碼規(guī)范:
(1)一個說明或一個語句占一行捂齐,例如:包含頭文件凫碌、一個可執(zhí)行語句結(jié)束都需要換行,當一句可執(zhí)行語句結(jié)束的時候末尾需要有分號;
(2)函數(shù)體內(nèi)的語句要有明顯縮進宣渗,通常以按一下Tab鍵為一個縮進;

3.注釋規(guī)范:
C語言注釋方法有兩種:
多行注釋: /* 注釋內(nèi)容 */
單行注釋: //注釋一行

4.標識符規(guī)范:
C 語言規(guī)定,標識符可以是字母(A~Z捣郊,a~z)、數(shù)字(0~9)慈参、下劃線_組成的字符串呛牲,并且第一個字符必須是字母或下劃線。在使用標識符時還有注意以下幾點:
(1)標識符的長度最好不要超過8位驮配,因為在某些版本的C中規(guī)定標識符前8位有效娘扩,當兩個標識符前8位相同時,則被認為是同一個標識符壮锻。
(2)標識符是嚴格區(qū)分大小寫的琐旁。例如Imooc和imooc 是兩個不同的標識符。
(3)標識符最好選擇有意義的英文單詞組成做到"見名知意"猜绣,不要使用中文灰殴。
(4)標識符不能是C語言的關(guān)鍵字。

5.變量
(1)每個變量都會有一個名字(標識符)掰邢。變量占據(jù)內(nèi)存中一定的存儲單元验懊。
(2)在定義中不允許連續(xù)賦值,如int a=b=c=5;是不合法的尸变。

6.數(shù)據(jù)類型:

Snip20170306_15.png

整型义图、實型與字符型:

Snip20170306_16.png

整型分類:

Snip20170306_17.png

注:(1) int、short int召烂、long int是根據(jù)編譯環(huán)境的不同碱工,所取范圍不同。而其中short int和long int至少是表中所寫范圍,但是int在表中是以16位編譯環(huán)境寫的取值范圍怕篷。另外 c語言int的取值范圍在于他占用的字節(jié)數(shù) 历筝,不同的編譯器,規(guī)定是不一樣廊谓。ANSI標準定義int是占2個字節(jié)梳猪,TC是按ANSI標準的,它的int是占2個字節(jié)的蒸痹。但是在VC里春弥,一個int是占4個字節(jié)的。
(2)C語言中不存在字符串變量叠荠,字符串只能存在字符數(shù)組中匿沛。
7.格式化符

Snip20170306_18.png

8.符號常量:
在C語言中,可以用一個標識符來表示一個常量榛鼎,稱之為符號常量逃呼。符號常量在使用之前必須先定義,其一般形式為:
#define 標識符 常量值
符號常量的標示符一般習慣使用大寫字母者娱,變量的標示符一般習慣使用小寫字母抡笼,加以區(qū)分。

9.自動類型轉(zhuǎn)換
自動轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型運算時黄鳍,在編譯的時候自動完成蔫缸。自動轉(zhuǎn)換遵循的規(guī)則就好比小盒子可以放進大盒子里面一樣,下圖表示了類型自動轉(zhuǎn)換的規(guī)則际起。

Snip20170306_19.png

栗子:

Snip20170306_20.png

注:(1)char類型數(shù)據(jù)轉(zhuǎn)換為int類型數(shù)據(jù)遵循ASCII碼中的對應值拾碌。
(2)字節(jié)小的可以向字節(jié)大的自動轉(zhuǎn)換,但字節(jié)大的不能向字節(jié)小的自動轉(zhuǎn)換

10.運算符
分類:

Snip20170306_21.png

算術(shù)運算符:

Snip20170306_22.png

注:(1)如果相除的兩個數(shù)都是整數(shù)的話街望,則結(jié)果也為整數(shù)校翔,小數(shù)部分省略;而兩數(shù)中有一個為小數(shù)灾前,結(jié)果則為小數(shù)防症。
(2)C語言中沒有乘方這個運算符,也不能用×哎甲,÷等算術(shù)符號蔫敲。
(3)自增自減:

Snip20170306_24.png

無論是a++還是++a都等同于a=a+1,在表達式執(zhí)行完畢后a的值都自增了1,無論是a--還是--a都等同于a=a-1,在表達式執(zhí)行完畢后a的值都自減少1。
栗子:

Snip20170306_25.png

輸出:

Snip20170306_26.png

11.賦值運算符
復合運算符中運算符和等號之間是不存在空格的炭玫。

12.三目運算符
C語言中的三目運算符:“?:”奈嘿,其格式為:
表達式1 ? 表達式2 : 表達式3;
執(zhí)行過程是:
先判斷表達式1的值是否為真,如果是真的話執(zhí)行表達式2吞加;如果是假的話執(zhí)行表達式3裙犹。

13.運算符優(yōu)先級

Snip20170306_27.png

14 while循環(huán)
while 和 do while區(qū)別
(1)while條件滿足執(zhí)行循環(huán)尽狠,do while 是先執(zhí)行循環(huán)在判斷,因此 后者至少執(zhí)行一次循環(huán)語句叶圃。
(2) do while的判斷結(jié)束要加分號:

Snip20170306_28.png

15.for 循環(huán)
(1)1袄膏、for循環(huán)中的“表達式1、2掺冠、3”均可可以缺省沉馆,但分號(;)不能缺省。
(2)省略“表達式2(循環(huán)條件)”德崭,不做其它處理斥黑,循環(huán)一直執(zhí)行(死循環(huán))。
(3) 省略“表達式3(循環(huán)變量增量)”接癌,不做其他處理,循環(huán)一直執(zhí)行(死循環(huán))扣讼。
(4)表達式1可以是設置循環(huán)變量的初值的賦值表達式缺猛,也可以是其他表達式。
(5)表達式1和表達式3可以是一個簡單表達式也可以是多個表達式以逗號分割椭符。

![Snip20170306_29.png](http://upload-images.jianshu.io/upload_images/2135173-
7cdf2253e11a327f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
(6)表達式2一般是關(guān)系表達式或邏輯表達式荔燎,但也可是數(shù)值表達式或字符表達式,只要其值非零销钝,就執(zhí)行循環(huán)體有咨。

Snip20170306_30.png

(7)各表達式中的變量一定要在for循環(huán)之前定義。

Snip20170306_31.png

三種循環(huán)的選擇:
(1)在知道循環(huán)次數(shù)的情況下更適合使用for循環(huán)蒸健;
(2)在不知道循環(huán)次數(shù)的情況下適合使用while或者do-while循環(huán)座享,如果有可能一次都不循環(huán)應考慮使用while循環(huán),如果至少循環(huán)一次應考慮使用do-while循環(huán)似忧。
但是從本質(zhì)上講渣叛,while,do-while和for循環(huán)之間是可以相互轉(zhuǎn)換的。

16.break
(1) 在沒有循環(huán)結(jié)構(gòu)的情況下盯捌,break不能用在單獨的if-else語句中淳衙。
(2)在多層循環(huán)中,一個break語句只跳出當前循環(huán)饺著。

17.continue
continue語句的作用是結(jié)束本次循環(huán)開始執(zhí)行下一次循環(huán)箫攀。
break語句與continue語句的區(qū)別是:break是跳出當前整個循環(huán),continue結(jié)束本次循環(huán)開始下一次循環(huán)幼衰。

18.swich
(1)在case子句后如果沒有break;會一直往后執(zhí)行一直到遇到break;才會跳出switch語句靴跛。
(2)switch后面的表達式語句只能是整型或者字符類型。
(3)在case后渡嚣,允許有多個語句汤求,可以不用{}括起來俏险。
(4)各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果扬绪。default子句可以省略不用竖独。

19.goto
C語言中也有這樣的語句,就是goto語句挤牛,goto語句是一種無條件分支語句莹痢,goto 語句的使用格式為:
goto 語句標號;
其中語句標號是一個標識符,該標識符一般用英文大寫并遵守標識符命名規(guī)則墓赴,這個標識符加上一個“:”一起出現(xiàn)在函數(shù)內(nèi)某處竞膳,執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標號處并執(zhí)行其后的語句诫硕。
goto語句通常不用坦辟,主要因為它將使程序?qū)哟尾磺澹也灰鬃x章办,但在特定情況下锉走,可以使用goto語句來提高程序的執(zhí)行速度,所以還是少用為妙藕届。

20.自定義函數(shù)

Snip20170306_32.png

(1)[]包含的內(nèi)容可以省略挪蹭,數(shù)據(jù)類型說明省略,默認是int類型函數(shù)休偶;參數(shù)省略表示該函數(shù)是無參函數(shù)梁厉,參數(shù)不省略表示該函數(shù)是有參函數(shù);
(2)函數(shù)名稱遵循標識符命名規(guī)范踏兜;
(3)自定義函數(shù)盡量放在main函數(shù)之前词顾,如果要放在main函數(shù)后面的話,需要在main函數(shù)之前先聲明自定義函數(shù)碱妆,聲明格式為:[數(shù)據(jù)類型說明] 函數(shù)名稱([參數(shù)]);
(4)參數(shù)調(diào)用
在C語言中计技,函數(shù)調(diào)用的一般形式為:
函數(shù)名([參數(shù)]);
注意:
1、對無參函數(shù)調(diào)用的時候可以將[]包含的省略山橄。
2垮媒、[]中可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達式航棱,個參數(shù)之間用逗號分隔睡雇。

21.形參與實參
形參是在定義函數(shù)名和函數(shù)體的時候使用的參數(shù),目的是用來接收調(diào)用該函數(shù)時傳入的參數(shù);實參是在調(diào)用時傳遞該函數(shù)的參數(shù)。
函數(shù)的形參和實參具有以下特點:
(1)形參只有在被調(diào)用時才分配內(nèi)存單元饮醇,在調(diào)用結(jié)束時它抱,即刻釋放所分配的內(nèi)存單元。因此朴艰,形參只有在函數(shù)內(nèi)部有效观蓄。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量混移。
(2)實參可以是常量、變量侮穿、表達式歌径、函數(shù)等,無論實參是何種類型的量亲茅,在進行函數(shù)調(diào)用時回铛,它們都必須具有確定的值,以便把這些值傳送給形參克锣。因此應預先用賦值等辦法使實參獲得確定值茵肃。
在參數(shù)傳遞時,實參和形參在數(shù)量上袭祟,類型上验残,順序上應嚴格一致,否則會發(fā)生類型不匹配”的錯誤巾乳。
栗子:


Snip20170306_33.png
  1. 遞歸函數(shù)
    遞歸就是一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身您没。執(zhí)行遞歸函數(shù)將反復調(diào)用其自身,每調(diào)用一次就進入新的一層想鹰。
    遞歸函數(shù)特點:
    (1)每一級函數(shù)調(diào)用時都有自己的變量紊婉,但是函數(shù)代碼并不會得到復制药版,如計算5的階乘時每遞推一次變量都不同辑舷;
    每次調(diào)用都會有一次返回,如計算5的階乘時每遞推一次都返回進行下一次槽片;
    (2)遞歸函數(shù)中何缓,位于遞歸調(diào)用前的語句和各級被調(diào)用函數(shù)具有相同的執(zhí)行順序;
    (3)遞歸函數(shù)中还栓,位于遞歸調(diào)用后的語句的執(zhí)行順序和各個被調(diào)用函數(shù)的順序相反碌廓;
    遞歸函數(shù)中必須有終止語句。
    一句話總結(jié)遞歸:自我調(diào)用且有完成狀態(tài)剩盒。

23 .局部與全局
(1)局部變量也稱為內(nèi)部變量谷婆。局部變量是在函數(shù)內(nèi)作定義說明的。其作用域僅限于函數(shù)內(nèi)辽聊, 離開該函數(shù)后再使用這種變量是非法的纪挎。在復合語句中也可定義變量,其作用域只在復合語句范圍內(nèi)跟匆。
(2)全局變量也稱為外部變量异袄,它是在函數(shù)外部定義的變量。它不屬于哪一個函數(shù)玛臂,它屬于一個源程序文件烤蜕。其作用域是整個源程序封孙。

24.變量存儲
C語言根據(jù)變量的生存周期來劃分,可以分為靜態(tài)存儲方式和動態(tài)存儲方式讽营。

靜態(tài)存儲方式:是指在程序運行期間分配固定的存儲空間的方式虎忌。靜態(tài)存儲區(qū)中存放了在整個程序執(zhí)行過程中都存在的變量,如全局變量斑匪。

動態(tài)存儲方式:是指在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間的方式呐籽。動態(tài)存儲區(qū)中存放的變量是根據(jù)程序運行的需要而建立和釋放的,通常包括:函數(shù)形式參數(shù)蚀瘸;自動變量狡蝶;函數(shù)調(diào)用時的現(xiàn)場保護和返回地址等。

C語言中存儲類別又分為四類:自動(auto)贮勃、靜態(tài)(static)贪惹、寄存器的(register)和外部的(extern)。

(1)用關(guān)鍵字auto定義的變量為自動變量寂嘉,auto可以省略奏瞬,auto不寫則隱含定為“自動存儲類別”,屬于動態(tài)存儲方式泉孩。
(2)用static修飾的為靜態(tài)變量硼端,如果定義在函數(shù)內(nèi)部的,稱之為靜態(tài)局部變量寓搬;如果定義在函數(shù)外部珍昨,稱之為靜態(tài)外部變量。
(3)為了提高效率句喷,C語言允許將局部變量得值放在CPU中的寄存器中镣典,這種變量叫“寄存器變量”,用關(guān)鍵字register作聲明唾琼。
栗子:

Snip20170306_34.png

(4)extern聲明的的變量是外部變量兄春,外部變量的意義是某函數(shù)可以調(diào)用在該函數(shù)之后定義的變量。
栗子:

Snip20170306_35.png

注:
(1)靜態(tài)局部變量屬于靜態(tài)存儲類別锡溯,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元赶舆,在程序整個運行期間都不釋放;靜態(tài)局部變量在編譯時賦初值祭饭,即只賦初值一次芜茵;如果在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說甜癞,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)夕晓。
(2)只有局部自動變量和形式參數(shù)可以作為寄存器變量;一個計算機系統(tǒng)中的寄存器數(shù)目有限悠咱,不能定義任意多個寄存器變量蒸辆;局部靜態(tài)變量不能定義為寄存器變量征炼。

25.內(nèi)部函數(shù)與外部函數(shù)
在C語言中不能被其他源文件調(diào)用的函數(shù)稱謂內(nèi)部函數(shù) ,內(nèi)部函數(shù)由static關(guān)鍵字來定義躬贡,因此又被稱謂靜態(tài)函數(shù)谆奥,形式為:

static [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])

這里的static是對函數(shù)的作用范圍的一個限定,限定該函數(shù)只能在其所處的源文件中使用拂玻,因此在不同文件中出現(xiàn)相同的函數(shù)名稱的內(nèi)部函數(shù)是沒有問題的酸些。

在C語言中能被其他源文件調(diào)用的函數(shù)稱謂外部函數(shù) ,外部函數(shù)由extern關(guān)鍵字來定義檐蚜,形式為:

extern [數(shù)據(jù)類型] 函數(shù)名([參數(shù)])

C語言規(guī)定魄懂,在沒有指定函數(shù)的作用范圍時,系統(tǒng)會默認認為是外部函數(shù)闯第,因此當需要定義外部函數(shù)時extern也可以省略市栗。

26.數(shù)組的初始化
數(shù)組聲明: 數(shù)據(jù)類型 數(shù)組名稱[長度];
數(shù)組初始化:
(1) 數(shù)據(jù)類型 數(shù)組名稱[長度n] = {元素1,元素2…元素n};

(2) 數(shù)據(jù)類型 數(shù)組名稱[] = {元素1,元素2…元素n};

(3) 數(shù)據(jù)類型 數(shù)組名稱[長度n]; 數(shù)組名稱[0] = 元素1; 數(shù)組名稱[1] = 元素2; 數(shù)組名稱[n] = 元素n+1;

27.數(shù)組作為函數(shù)參數(shù)
(1)數(shù)組名作為函數(shù)實參傳遞時,函數(shù)定義處作為接收參數(shù)的數(shù)組類型形參既可以指定長度也可以不指定長度咳短。
(2)數(shù)組元素作為函數(shù)實參傳遞時填帽,數(shù)組元素類型必須與形參數(shù)據(jù)類型一致。

28.字符串與數(shù)組
在C語言中咙好,是沒有辦法直接定義字符串數(shù)據(jù)類型的篡腌,但是我們可以使用數(shù)組來定義我們所要的字符串。一般有以下兩種格式:
(1)char 字符串名稱[長度] = "字符串值";
(2)char 字符串名稱[長度] = {'字符1','字符2',...,'字符n','\0'};
注意:
(1)[]中的長度是可以省略不寫的勾效;
(2)采用第2種方式的時候最后一個元素必須是'\0'嘹悼,'\0'表示字符串的結(jié)束標志;
(3)采用第2種方式的時候在數(shù)組中不能寫中文葵第。

29.字符串函數(shù)


Snip20170306_36.png

(1)strlen()獲取字符串的長度绘迁,在字符串長度中是不包括‘\0’而且漢字和字母的長度是不一樣的合溺。
(2)strcmp()在比較的時候會把字符串先轉(zhuǎn)換成ASCII碼再進行比較,返回的結(jié)果為0表示s1和s2的ASCII碼相等,返回結(jié)果為1表示s1比s2的ASCII碼大,返回結(jié)果為-1表示s1比s2的ASCII碼小卒密。
(3)strcpy()拷貝之后會覆蓋原來字符串且不能對字符串常量進行拷貝。
(4)strcat在使用時s1與s2指的內(nèi)存空間不能重疊棠赛,且s1要有足夠的空間來容納要復制的字符串哮奇。

  1. 多維數(shù)組
    多維數(shù)組的初始化與一維數(shù)組的初始化類似也是分兩種:
    (1)數(shù)據(jù)類型 數(shù)組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

(2)數(shù)據(jù)類型 數(shù)組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數(shù)組名稱[下標1][下標2]...[下標n] = 值;
注:
(1)采用第一種始化時數(shù)組聲明必須指定列的維數(shù)。因為系統(tǒng)會根據(jù)數(shù)組中元素的總個數(shù)來分配空間睛约,當知道元素總個數(shù)以及列的維數(shù)后鼎俘,會直接計算出行的維數(shù);
(2)采用第二種初始化時數(shù)組聲明必須同時指定行和列的維數(shù)辩涝。

以上所有內(nèi)容是本人學習慕課網(wǎng)課程的基礎(chǔ)筆記贸伐,方便后期查找。最后感謝慕課網(wǎng)怔揩!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捉邢,一起剝皮案震驚了整個濱河市脯丝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伏伐,老刑警劉巖宠进,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異藐翎,居然都是意外死亡材蹬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門吝镣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堤器,“玉大人,你說我怎么就攤上這事末贾『鹁桑” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵未舟,是天一觀的道長圈暗。 經(jīng)常有香客問我,道長裕膀,這世上最難降的妖魔是什么员串? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮昼扛,結(jié)果婚禮上寸齐,老公的妹妹穿的比我還像新娘。我一直安慰自己抄谐,他們只是感情好渺鹦,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛹含,像睡著了一般毅厚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浦箱,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天吸耿,我揣著相機與錄音,去河邊找鬼酷窥。 笑死咽安,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蓬推。 我是一名探鬼主播妆棒,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糕珊?” 一聲冷哼從身側(cè)響起蛋铆,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎放接,沒想到半個月后刺啦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡纠脾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年玛瘸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苟蹈。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡糊渊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慧脱,到底是詐尸還是另有隱情渺绒,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布菱鸥,位于F島的核電站宗兼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏氮采。R本人自食惡果不足惜殷绍,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹊漠。 院中可真熱鬧主到,春花似錦、人聲如沸躯概。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娶靡。三九已至牧牢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間固蛾,已是汗流浹背结执。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工度陆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艾凯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓懂傀,卻偏偏與公主長得像趾诗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容