目錄
C語言入門學(xué)習(xí)知識點(diǎn)整理:附帶碼源(包含注釋)、在線編譯工具等
一、C語言的起源
C語言最初是由Dennis Ritchie于1972年在貝爾實(shí)驗(yàn)室開發(fā)的,旨在為UNIX操作系統(tǒng)提供底層的編程接口。C語言源自于B語言,后來又發(fā)展出了C++、Java、Python等眾多編程語言。由于其開源和跨平臺的特性,C語言成為了計(jì)算機(jī)科學(xué)領(lǐng)域最廣泛使用的編程語言之一。
二、C語言的語法結(jié)構(gòu)C語言的語法結(jié)構(gòu)可以分為預(yù)處理器指令、庫函數(shù)、變量、數(shù)據(jù)類型、運(yùn)算符、控制語句和函數(shù)等七個方面。
1.預(yù)處理器指令
預(yù)處理器指令是指在編譯之前對源代碼進(jìn)行處理的指令,通常以“#”開頭,如#include、#define等。預(yù)處理器指令可以用來引入頭文件、定義常量等。
2.庫函數(shù)
庫函數(shù)是指由編譯器提供的函數(shù)庫,包含了各種常用的函數(shù),如printf、scanf等。使用庫函數(shù)可以減少編寫代碼的量,提高編寫代碼的效率。
3.變量
變量是指在程序中用來存儲數(shù)據(jù)的容器,可以是整型、浮點(diǎn)型、字符型、指針型等多種類型。變量需要先聲明后使用,在聲明時需要指定變量的類型和名稱。
4.數(shù)據(jù)類型
C語言的數(shù)據(jù)類型可以分為基本數(shù)據(jù)類型和派生數(shù)據(jù)類型兩類。基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符型和布爾型等,派生數(shù)據(jù)類型包括數(shù)組、結(jié)構(gòu)體、共用體和指針等。不同的數(shù)據(jù)類型在內(nèi)存中所占用的字節(jié)數(shù)也不同。
5.運(yùn)算符
C語言的運(yùn)算符包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符等多種類型。運(yùn)算符的作用是對變量進(jìn)行計(jì)算和比較,常用的運(yùn)算符包括+、-、*、/等。
6.控制語句
C語言的控制語句包括條件語句、循環(huán)語句和跳轉(zhuǎn)語句等,用于控制程序的執(zhí)行流程。常用的控制語句包括if、while、for等。
7.函數(shù)
函數(shù)是C語言中最基本的程序單元,可以實(shí)現(xiàn)特定的功能,提高代碼的復(fù)用性。函數(shù)需要先定義后調(diào)用,在定義函數(shù)時需要指定函數(shù)名稱、參數(shù)和返回值類型等。
三、C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型可以分為基本數(shù)據(jù)類型和派生數(shù)據(jù)類型兩類。
1.基本數(shù)據(jù)類型
C語言的基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符型和布爾型等。
(1)整型:C語言中的整型分為有符號整型和無符號整型兩種。有符號整型包括char、short、int和long等,分別占1、2、4和4個字節(jié)。無符號整型包括unsigned char、unsigned short、unsigned int和unsigned long等,分別占1、2、4和4個字節(jié)。整型的取值范圍和字節(jié)數(shù)根據(jù)不同的編譯器有所不同。
(2)浮點(diǎn)型:C語言中的浮點(diǎn)型分為float、double和long double三種,分別占4、8和16個字節(jié)。浮點(diǎn)型用于存儲小數(shù),具有更高的精度和更大的取值范圍。
(3)字符型:C語言中的字符型用于存儲字符,占1個字節(jié)。字符型變量可以用單引號括起來表示,如'c'表示字符c。
(4)布爾型:C語言中的布爾型用于存儲邏輯值,包括true和false兩種取值。布爾型變量通常用于條件判斷和邏輯運(yùn)算中。
2.派生數(shù)據(jù)類型
C語言的派生數(shù)據(jù)類型包括數(shù)組、結(jié)構(gòu)體、共用體和指針等。
(1)數(shù)組:C語言中的數(shù)組是一種有序的數(shù)據(jù)集合,可以存儲相同類型的數(shù)據(jù)。數(shù)組需要指定元素類型和元素個數(shù),在定義數(shù)組時需要使用中括號[]指定元素個數(shù)。
(2)結(jié)構(gòu)體:C語言中的結(jié)構(gòu)體可以將多個不同類型的變量組合成一個整體。結(jié)構(gòu)體需要先定義后使用,在定義時需要指定結(jié)構(gòu)體的名稱和成員變量的類型和名稱等。
(3)共用體:C語言中的共用體是一種特殊的結(jié)構(gòu)體,所有成員變量共享同一塊內(nèi)存空間。共用體可以實(shí)現(xiàn)多種數(shù)據(jù)類型的共享和互換。
(4)指針:C語言中的指針是一種特殊的變量,可以存儲其他變量的地址。指針變量需要指定指向的變量類型,在使用時需要使用取地址符&和解引用符*。
四、C語言的函數(shù)C語言的函數(shù)是程序中最基本的代碼單元,可以實(shí)現(xiàn)特定的功能并提高代碼的復(fù)用性。函數(shù)需要先定義后調(diào)用,在定義函數(shù)時需要指定函數(shù)名稱、參數(shù)和返回值類型等。
C語言中的函數(shù)可以分為庫函數(shù)和用戶自定義函數(shù)兩種。庫函數(shù)是由編譯器提供的函數(shù)庫,包含了
眾多常用的函數(shù),例如數(shù)學(xué)庫函數(shù)、字符串處理函數(shù)等。用戶自定義函數(shù)是由程序員自行編寫的函數(shù),根據(jù)實(shí)際需求定義相應(yīng)的參數(shù)和返回值類型。
C語言的函數(shù)定義一般遵循以下格式:
返回值類型 函數(shù)名稱(參數(shù)列表) { 函數(shù)體 return 返回值; }
其中,返回值類型指定函數(shù)返回值的數(shù)據(jù)類型,函數(shù)名稱是函數(shù)的標(biāo)識符,參數(shù)列表包含了函數(shù)的參數(shù)類型和名稱,函數(shù)體是具體的實(shí)現(xiàn)代碼,return語句用于返回函數(shù)的結(jié)果。
C語言中的函數(shù)調(diào)用需要使用函數(shù)名稱和實(shí)際參數(shù)來調(diào)用函數(shù),例如:
int add(int a, int b); int main() { int result = add(2, 3); printf("%d", result); return 0; }
在上面的例子中,add函數(shù)是一個用戶自定義函數(shù),用于實(shí)現(xiàn)兩個整數(shù)相加的功能。在main函數(shù)中調(diào)用了add函數(shù),并將結(jié)果賦值給result變量,最終輸出結(jié)果為5。
五、C語言的控制語句C語言的控制語句用于實(shí)現(xiàn)程序的流程控制和邏輯判斷,主要包括選擇語句和循環(huán)語句兩種。
1.選擇語句
C語言中的選擇語句包括if語句和switch語句兩種。if語句用于根據(jù)條件選擇不同的執(zhí)行路徑,語法格式如下:
if (condition) { statement; }
其中,condition為條件表達(dá)式,如果條件成立則執(zhí)行statement中的語句。switch語句用于根據(jù)變量值選擇不同的執(zhí)行路徑,語法格式如下:
switch (expression) { case constant1: statement1; break; case constant2: statement2; break; default: statement3; break; }
其中,expression為變量或表達(dá)式,根據(jù)其值選擇執(zhí)行不同的case語句。如果沒有匹配的case語句,則執(zhí)行default語句。
2.循環(huán)語句
C語言中的循環(huán)語句包括for語句、while語句和do-while語句三種。for語句用于重復(fù)執(zhí)行一段代碼,語法格式如下:
for (initialization; condition; update) { statement; }
其中,initialization為初始化語句,condition為循環(huán)條件,update為更新語句,statement為執(zhí)行的語句。while語句和do-while語句也用于重復(fù)執(zhí)行一段代碼,其語法格式分別如下:
/*實(shí)例1 while循環(huán)*/ while (condition) { statement; } /*實(shí)例2 do-while循環(huán)*/ do { statement; } while (condition);
其中,while語句在循環(huán)之前先進(jìn)行條件判斷,而do-while語句先執(zhí)行一次循環(huán)體再進(jìn)行條件判斷。
六、C語言的文件操作C語言中的文件操作用于對磁盤文件進(jìn)行讀寫操作,主要包括打開文件、關(guān)閉文件、讀寫文件等操作。文件操作需要使用標(biāo)準(zhǔn)庫中的文件操作函數(shù),例如fopen、fclose、fread、fwrite等函數(shù)。打開文件的函數(shù)fopen的語法格式為:
FILE *fopen(const char *filename, const char *mode);
其中,filename為文件名,mode為打開文件的模式,可以是"r"、"w"、"a"等模式。打開文件成功后,fopen函數(shù)將返回一個文件指針,該指針可以用于后續(xù)文件操作。
關(guān)閉文件的函數(shù)fclose的語法格式為:
int fclose(FILE *stream);
其中,stream為文件指針,fclose函數(shù)用于關(guān)閉指定的文件。
讀寫文件的函數(shù)包括fread、fwrite、fscanf、fprintf等函數(shù)。這些函數(shù)的具體使用方法可以參考相應(yīng)的函數(shù)說明。
七、C語言的預(yù)處理器C語言的預(yù)處理器用于在編譯之前對源代碼進(jìn)行處理,主要包括宏定義、文件包含、條件編譯等功能。
宏定義是預(yù)處理器中最常用的功能之一,可以使用#define關(guān)鍵字定義一個宏,例如:
#define PI 3.1415926
該宏定義將會在編譯之前被預(yù)處理器替換為3.1415926。
文件包含可以使用#include關(guān)鍵字將其他文件包含到當(dāng)前源文件中,例如:
#include "header.h"
條件編譯可以使用#if、#ifdef、#ifndef、elif等關(guān)鍵字實(shí)現(xiàn),例如:
#ifdef DEBUG printf("Debug mode.\n"); #endif
該代碼段只有在DEBUG宏定義時才會被編譯。
八、C語言的指針C語言的指針是一種非常重要的概念,可以用于動態(tài)內(nèi)存分配、函數(shù)傳參、數(shù)組訪問等場景。
指針實(shí)際上就是一個變量,存儲著一個內(nèi)存地址。可以使用&運(yùn)算符獲取變量的地址,例如:
int a = 10; int *p = &a;
該代碼段中,p是一個指向a變量的指針。
指針的訪問可以使用*運(yùn)算符實(shí)現(xiàn),例如:
int b = *p;
該代碼段中,b的值等于a的值。
動態(tài)內(nèi)存分配可以使用malloc函數(shù)實(shí)現(xiàn),例如:
int *p = (int *)malloc(sizeof(int) * 10);
該代碼段中,malloc函數(shù)分配了一塊大小為10個int類型的內(nèi)存空間,并返回一個指向該空間的指針。
函數(shù)傳參可以使用指針作為參數(shù),例如:
void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }
該代碼段中,swap函數(shù)使用指針作為參數(shù),可以交換兩個變量的值。
數(shù)組訪問也可以使用指針實(shí)現(xiàn),例如:
int a[10] = {1, 2, 3, 4, 5}; int *p = a; printf("%d", *p);
該代碼段中,p指向a數(shù)組的第一個元素,*p等于a[0]的值。
九、總結(jié)C語言是一門廣泛應(yīng)用于系統(tǒng)編程、嵌入式開發(fā)、科學(xué)計(jì)算等領(lǐng)域的編程語言,具有高效、靈活、可移植等特點(diǎn)。C語言的基礎(chǔ)概念包括變量、數(shù)據(jù)類型、運(yùn)算符、流程控制、函數(shù)、文件操作、預(yù)處理器、指針等,熟練掌握這些概念對于學(xué)好C語言非常重要。
在學(xué)習(xí)C語言時,可以通過閱讀相關(guān)書籍、視頻教程、實(shí)踐編程等方式提高自己的編程水平。同時也要注意規(guī)范編程風(fēng)格,避免出現(xiàn)一些常見的錯誤,例如數(shù)組越界、內(nèi)存泄漏、空指針訪問等。
總的來說,C語言是一門非常重要的編程語言,在計(jì)算機(jī)科學(xué)領(lǐng)域發(fā)揮著巨大的作用。掌握好C語言的基礎(chǔ)概念,可以為以后的學(xué)習(xí)和工作奠定良好的基礎(chǔ)。