【【ccc云志】學(xué)c語言最重要的知識點總結(jié),為學(xué)c語言發(fā)愁的同學(xué)轉(zhuǎn)走背一下吧】https://toutiao.com/group/6582822070382494216/?iid=15906422033&app=explore_article×tamp=1532780891&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share (指針星號在非變量定義的時候它是一個操作符訪問指針?biāo)赶虼鎯臻g) 學(xué)c語言最重要的知識點總結(jié),為學(xué)c語言發(fā)愁的同學(xué)轉(zhuǎn)走背一下吧一、C語言的基本概念與常識1、所有計算機(jī)的指令與數(shù)據(jù)都是由 0、1構(gòu)成 2、C語言是由函數(shù)組成的 3、C語言的入口是main函數(shù) 4、源碼 -> 編譯 -> 鏈接 -》運行 關(guān)鍵字:C語言提供的表示特殊含義單詞 標(biāo)示符:程序員自己為某些東西起名字 命名規(guī)則: 1、字母、數(shù)字、下劃線 2、不能以數(shù)字開頭 3、不能與關(guān)鍵字重名 4、嚴(yán)格區(qū)分大小寫 命名規(guī)范 駝峰標(biāo)示 注釋:對代碼解釋說明,是給程序員看的,方便程序員之間的交流 1、注釋不參與編譯 2、 單行注釋 // 多行注釋 數(shù)據(jù)類型:按照存儲時間 靜態(tài)數(shù)據(jù):存儲在硬盤上的數(shù)據(jù) 動態(tài)數(shù)據(jù):存儲在內(nèi)存中的數(shù)據(jù) 常量:不可以改變量 變量:可以改變的量,變量使用來存儲常量數(shù)據(jù)的 運算符 算術(shù)運算符 - * / % 賦值運算符 = = -= /= *= %= 自增自減 --a a-- a a 關(guān)系運算符 == != > < >= <= 邏輯運算符 && || ! 三目運算符 條件表達(dá)式 ? 結(jié)果1 : 結(jié)果2; 二、數(shù)據(jù)類型基本數(shù)據(jù)類型 int 、float 、double 、char 枚舉:當(dāng)某個東西只有幾個固定的取值的時候,我們就使用枚舉 定義格式 enum 枚舉類型名{成員,... }; 作用:提高代碼可讀性 構(gòu)造類型 數(shù)組:保存相同數(shù)據(jù)類型的多個數(shù)據(jù)的集合(容器) 格式: 數(shù)據(jù)類型 數(shù)組名[元素格式] 結(jié)構(gòu)體:用來保存不同數(shù)據(jù)類型的多個數(shù)據(jù)的,相同的數(shù)據(jù)類型但可以表示特定含義的也可以使用結(jié)構(gòu)體 定義結(jié)構(gòu)體類型的格式; struct 結(jié)構(gòu)體類型名{ 數(shù)據(jù)類型 成員名; ... }; 特點:先定義結(jié)構(gòu)體類型再定義結(jié)構(gòu)體變量 作用:提高代碼的可讀性、封裝數(shù)據(jù)、然代碼更有組織 指針類型 定義格式:所指向數(shù)據(jù)類型 * 指針變量名 *作用: 1、在變量定義的時候,它是一個說明符,說明定義這個變量是指針變量; 2、在非變量定義的時候,它是一個操作符,訪問指針?biāo)赶虼鎯臻g &作用:取出變量的地址 * 與 & 是一對反操作符 1、指針作為函數(shù)參數(shù)傳遞是地址傳遞 指向數(shù)組的指針: int nums[5][10]; int (*array)[10] = nums; 指向結(jié)構(gòu)體指針 struct Person{int age;}; struct Person person = {10}; struct Perosn *p = &person; p->age; 指向函數(shù)指針 int sum(int num1,int num2) { return num1 num2 ; } int (*sumPointer)(int,int) = sum; sumPointer(); 字符串: 1、使用字符數(shù)組 char name[] = 'zbz'; //棧 : 可以修改的 2、使用字符指針 char *name = 'zbz'; //常量區(qū) 只讀的 3、字符串?dāng)?shù)組 1、char類型的二維數(shù)組 char names[][10] = {'xhh','xff','xmf'};//棧 2、char類型指針數(shù)組 char *names[] ={'xhh','xff','xmf'};// 常量區(qū) 總結(jié):所有的數(shù)據(jù)類型都可以定義變量 所有數(shù)據(jù)類型都可以作為函數(shù)參數(shù) 所有數(shù)據(jù)類型都可以作為函數(shù)的返回值 三、流程控制順序結(jié)構(gòu):按照從上到下順序執(zhí)行 分支結(jié)構(gòu)(選擇結(jié)構(gòu)):就相當(dāng)于岔路口,根據(jù)不同條件指向不同代碼 if語句:當(dāng)條件滿足的時候,執(zhí)行if后面大括號中語句 1、if都是以if開頭 2、if語句最多只有一個else 3、if語句可以有任意個else if 4、if語句最多只有一個代碼會被執(zhí)行 switch語句 1、只支持整形數(shù)據(jù) 2、如果表達(dá)式中值與case中的常量相等就執(zhí)行這個case中語句 3、只有遇到break和 } 才會結(jié)束 4、只要匹配上一個case那么后面的case都失效了 循環(huán)結(jié)構(gòu)體:只要條件滿足就指向循環(huán)體中的語句,直到條件不再滿足為止 while循環(huán):當(dāng)while后條件表達(dá)滿足就指向循環(huán)體 do while: 循環(huán)體中的代碼至少會執(zhí)行一次 for循環(huán): 格式:for(初始化表達(dá)式;條件表達(dá)式;循環(huán)后操作表達(dá)式) { 語句; .... } 初始化表達(dá)式:在整個循環(huán)中僅執(zhí)行一次 條件表達(dá)式:在每一次循環(huán)前都會判斷條件表達(dá)式是否滿足,如果滿足就執(zhí)行循環(huán)體中代碼 否則就退出循環(huán) 操作后表達(dá)式:在沒有循環(huán)結(jié)束的時候都可以循環(huán)后操作表達(dá)式 continue: 只能用循環(huán)結(jié)構(gòu)中,跳過本次循環(huán)中,continue后語句,進(jìn)入下一次條件判斷 break: 用在switch中,他是用結(jié)束switch語句的 用在循環(huán)結(jié)構(gòu)中,結(jié)束當(dāng)前循環(huán)語句的 四、 函數(shù):完成特定功能代碼段函數(shù)定義的格式: 形參列表 返回值類型 函數(shù)名稱(形參類型 形參名稱...) { 語句; ... } 寫一個函數(shù)步驟: 1、確定函數(shù)功能,給函數(shù)起一個有意義名字 2、確定形參列表(完成該功能是否需要外界傳入一些補助值) 3、確定返回值類型(完成該功能是否需要返回數(shù)據(jù)給調(diào)用者) 4、寫函數(shù)體,完成函數(shù)功能 如果我們要在前面的函數(shù)中訪問后面的函數(shù),需要對函數(shù)進(jìn)行聲明 多文件開發(fā) .h 中寫函數(shù)的聲明 .c 寫函數(shù)的實現(xiàn)(定義) 注意點: 1、基本數(shù)據(jù)類型作為函數(shù)參數(shù)傳遞是指值傳遞 2、數(shù)組作為函數(shù)參數(shù)傳遞是地址傳遞 3、指針作為函數(shù)參數(shù)傳遞是地址傳遞 4、結(jié)構(gòu)體作為函數(shù)參數(shù)傳遞是值傳遞 五、進(jìn)制十進(jìn)制:逢 10 進(jìn) 1 默認(rèn) %d 二進(jìn)制:逢 2 進(jìn) 1 0b/0B開頭 無 八進(jìn)制:逢 8 進(jìn) 1 0開頭 %o 十六進(jìn)制:逢 16 進(jìn) 1 0x開頭 %x %X 位運算: & | ^ ~ >> << 六、預(yù)處理指令:在編譯之前進(jìn)行解析處理指令宏定義: 不帶參數(shù)宏定義: #define 宏名 值 作用:在預(yù)編譯的時候,將代碼中所有出現(xiàn)宏名地方都替換成值 帶參數(shù)宏定義:#define 宏名(參數(shù)列表) 表達(dá)式 作用:在編譯預(yù)處理的時候,使用表達(dá)式替換出現(xiàn)宏名列表的地方 #define SUM(x,y) ((x) (y)) SUM(10,20) ==== ((10) (20)) 條件編譯:如果滿足條件就編譯if后面的語句 #if 條件表達(dá)式 語句; #elif 語句; #endif 1、防止頭文件的重復(fù)包含 2、可以處理項目上線與開發(fā)兩種狀態(tài)下執(zhí)行不同代碼 文件包含: #inclue:拷貝文件 #inclue '' 包含自己寫頭文件 #inclue <> 包含系統(tǒng)自帶頭文件 7、typedef 1、給基本數(shù)據(jù)類型起別名 typedef int Integer; 2、給結(jié)構(gòu)體起別名 typedef struct{ int age; } Person; 3、給枚舉類型起別名 typedef enum{ Man, Woman, Other } Sex; 4、指針類型起別名 typedef int * Int; Int p; 5、給函數(shù)指針起別名 int sum(int num1,int num2) {return num1 num2; } typedef int (*Pointer)(int,int); Pointer sumPointer = sum; sumPointer(); 學(xué)習(xí)基地(見評論區(qū)) 很多人的學(xué)習(xí)環(huán)境就是課堂,離開了課堂,自己學(xué)的時間少之又少,少了份氣氛,就算逼著自己去學(xué)習(xí),慢慢的也會覺得枯燥,有問題不會也沒有人去問,可以找一個C/C 交流學(xué)習(xí)群,集合了眾多志同道合的朋友,這樣對你學(xué)習(xí)會起到一定的暗示作用,有問題也可以在群里討論。 寫在最后喜歡此篇文章或覺得這篇文章對你有幫助的讀者可以點播關(guān)注或者轉(zhuǎn)發(fā),以便幫助更多對如何學(xué)習(xí)C/C 迷茫的小白。 =->學(xué)習(xí)基地見評論區(qū) |
|