C語言基礎知識總結大全如下:
1、入門程序?
2、數據類型?
數據類型:
1.基本數據類型:
1.1. 整型:int 4個字節
1.2. 字符型:char 1個字節
1.3. 實型(浮點型)
1.3.1.單精度型:float 4個字節?
1.3.2.雙精度型:double 8個字節?
2.構造類型:
2.1.枚舉類型
2.2.數組類型
2.3.結構體類型
2.4.***用體類型
3.指針類型:
4.空類型:
3.格式化輸出語句?
%d:十進制整數;?
%c:單個字符;?
%s:字符串;?
%f:6位小數;?
4.常量?
值不發生改變的量成為常量;
定義字符常量(註意後面沒有;)
5.運算符?
5.1.算數運算符:+,-,*,/,%,++,--;前++/--,先運算,再取值.後++/--,先取值,再運算;
5.2.賦值運算符:
5.3.關系運算符;
5.4.邏輯運算符;
5.5.三目運算符:
表達式1 ? 表達式2 : 表達式3;
6.水仙花數計算?
輸出所有三位數的水仙花數字
所謂“水仙花數”是指壹個三位數,其各位數字立方和等於該數,如:153就是壹個水仙花數,153=111+555+333。
7.打印正三角形的*?
8.臭名遠揚的goto語句?
很少使用
9.形參與實參?
形參:形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數;
實參:實參是在調用時傳遞該函數的參數。
函數的形參和實參具有以下特點:
形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變量。
實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。
在參數傳遞時,實參和形參在數量上,類型上,順序上應嚴格壹致,否則會發生類型不匹配”的錯誤。
10.函數返回值註意?
註意:void函數中可以有執行代碼塊,但是不能有返回值,另void函數中如果有return語句,該語句只能起到結束函數運行的功能。其格式為:return;
11.遞歸?
12.變量存儲類別 !?
12.1.生存周期劃分存儲方式
C語言根據變量的生存周期來劃分,可以分為靜態存儲方式和動態存儲方式。
靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變量,如全局變量。
動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變量是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變量;函數調用時的現場保護和返回地址等。
12.2.存儲類型劃分
C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern) ;
用關鍵字auto定義的變量為自動變量,auto可以省略,auto不寫則隱含定為“自動存儲類別”,屬於動態存儲方式。
用static修飾的為靜態變量,如果定義在函數內部的,稱之為靜態局部變量;如果定義在函數外部,稱之為靜態外部變量。
註意:靜態局部變量屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變量在編譯時賦初值,即只賦初值壹次;如果在定義局部變量時不賦初值的話,則對靜態局部變量來說,編譯時自動賦初值0(對數值型變量)或空字符(對字符變量)
為了提高效率,C語言允許將局部變量的值放在CPU中的寄存器中,這種變量叫“寄存器變量”,用關鍵字register作聲明。
註意:只有局部自動變量和形式參數可以作為寄存器變量;壹個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變量;局部靜態變量不能定義為寄存器變量。
用extern聲明的的變量是外部變量,外部變量的意義是某函數可以調用在該函數之後定義的變量。
13.內部函數外部函數 !?
在C語言中不能被其他源文件調用的函數稱為內部函數 ,內部函數由static關鍵字來定義,因此又被稱為靜態函數,形式為:
static [數據類型] 函數名([參數])
這裏的static是對函數的作用範圍的壹個限定,限定該函數只能在其所處的源文件中使用,因此在不同文件中出現相同的函數名稱的內部函數是沒有問題的。
在C語言中能被其他源文件調用的函數稱為外部函數 ,外部函數由extern關鍵字來定義,形式為:
extern [數據類型] 函數名([參數])
C語言規定,在沒有指定函數的作用範圍時,系統會默認認為是外部函數,因此當需要定義外部函數時extern也可以省略。 extern可以省略; 14.數組 數組:壹塊連續的,大小固定並且裏面的數據類型壹致的內存空間, 數組的聲明:數據類型 數組名稱[長度n]
數據類型 數組名稱[長度n] = {元素1,元素2,元素3,......};
數據類型 數組名稱[] = {元素1,元素2,元素3,......};
數類類型 數組名稱[長度n]; 數組名稱[0] = 元素1;數組名稱[1] = 元素2;...... 註意: 1、數組的下標均以0開始;
2、數組在初始化的時候,數組內元素的個數不能大於聲明的數組長度。
3、如果采用第壹種初始化方式,元素個數小於數組的長度時,多余的數組元素初始化為0; 4、在聲明數組後沒有進行初始化的時候,靜態(static)和外部(extern)類型的數組元素初始化元素為0,自動(auto)類型的數組的元素初始化值不確定。
15.數組遍歷?
數組的冒泡排序
冒泡排序的思想:相鄰元素兩兩比較,將較大的數字放在後面,直到將所有數字全部排序。
字符串與數組
在C語言中,是沒有辦法直接定義子字符串數據類型的,需使用數組來定義所要的字符串,形式如下:
char 字符串名稱[長度] = "字符串內容";
char 字符串名稱[長度] = {'字符串1','字符串2',....,'字符串n','\0'};
註:
[]中的長度可以省略不寫;
采用第二種方式最後壹個元素必須是'\0',表示結束;
第二種方式不能寫中文!; 輸出字符串時,要使用:printf("%s",字符數組名);或puts(字符數組名);
16.字符串函數?
strlen(s):獲取字符串s的長度;
strcmp(s1,s2):比較字符串;比較的時候會把字符串轉換成ASCII碼再進行比較,返回結果為0表示s1和s2的ASCII碼值相等,返回結果為1表示s1比s2的ASCII碼大,返回結果為-1表示s1比s2的ACSII碼小;
strcpy(s1,s2):字符串拷貝;s2會取代s1中的內容;
strcat(s1,s2)將s2拼接到s1後面;註意:s1的length要足夠才可以!
atoi(s1)將字符串轉為整數!
17.多維數組?
數據類型 數組名稱[常量表達式1]...[常量表達式n];
多維數組的初始化與壹維數組的初始化類似也是分兩種:
數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};
數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數組名稱[下標1][下標2]...[下標n] = 值;
多維數組初始化要註意以下事項:
采用第壹種始化時數組聲明必須指定列的維數。因為系統會根據數組中元素的總個數來分配空間,當知道元素總個數以及列的維數後,會直接計算出行的維數;
采用第二種初始化時數組聲明必須同時指定行和列的維數。
18.多維度數組的遍歷?
使用嵌套循環
註意:多維數組的每壹維下標均不能越界!
19.結構體?
C 數組允許定義可存儲相同類型數據項的變量,結構是 C 編程中另壹種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。
結構用於表示壹條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:
Title
Author
Subject
Book ID
定義結構
為了定義結構,您必須使用 struct 語句。struct 語句定義了壹個包含多個成員的新的數據類型,struct 語句的格式如下:
tag 是結構體標簽。
member-list 是標準的變量定義,比如 int i; 或者 float f,或者其他有效的變量定義。
variable-list 結構變量,定義在結構的末尾,最後壹個分號之前,您可以指定壹個或多個結構變量。下面是聲明 Book 結構的方式:
在壹般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為實例:
訪問結構成員
為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變量名稱和我們要訪問的結構成員之間的壹個句號。您可以使用 struct 關鍵字來定義結構類型的變量。下面的實例演示了結構的用法:
20.***用體?
***用體是壹種特殊的數據類型,允許您在相同的內存位置存儲不同的數據類型。您可以定義壹個帶有多成員的***用體,但是任何時候只能有壹個成員帶有值。***用體提供了壹種使用相同的內存位置的有效方式。
21.指針?
22.文件讀寫?
寫入文件
讀取文件
C語言與C++學習路線
23.排序算法?
十大經典排序算法(動態演示+代碼)
24.查找算法?
九種查找算法
25.面試知識
C語言與C++面試知識總結
26.字符串操作
字符串操作的全面總結
27. C語言常用標準庫解讀
C語言常用標準庫解讀
28. C語言最常用的貪心算法
C語言最常用的貪心算法就這麽被攻克了
29. 常見的C語言內存錯誤及對策
常見的C語言內存錯誤及對策
30. C語言實現面向對象的原理
C語言實現面向對象的原理
31. C語言/C++內存管理
看完這篇妳還能不懂C語言/C++內存管理?
32. 再談C語言指針
再談指針:大佬給妳撥開 C 指針的雲霧
C語言函數指針之回調函數
C語言指針詳解(文末有福利)
33. C語言預處理命令
長文詳解:C語言預處理命令
34. C語言高效編程與代碼優化
C語言高效編程與代碼優化
35. C語言結構體
C語言之結構體就這樣被攻克了!值得收藏!
36. 原碼, 反碼, 補碼 詳解
原碼, 反碼, 補碼 詳解
37. C語言宏定義
簡述C語言宏定義的使用
38. c語言之***用體union、枚舉、大小端模式
c語言之***用體union、枚舉、大小端模式
C 語言可以零基礎入門,它的語法是很多高級編程語言的基礎,比如說 Java、C++;並且起到承上啟下的作用,向上可以學習高級編程語言,向下可以學習計算機組成原理、操作系統等等偏基礎的計算機基礎知識。
書籍
第壹本書《阿哈C語言》的寫書風格個人認為比較風趣幽默,對於培養興趣,基礎學習還是很不錯的
《C程序設計語言》,機械工業出版社,作者Brian W. Kernighan / (美)Dennis M. Ritchie。C 語言之父寫的,入門經典書籍。
《C Primer Plus》 ,人民郵電出版社,作者 Stephen Prata。 可以作為 C 語言工具書,也可以作為入門,內容循序漸進,能夠鍛煉編程思想。
《C和指針》 深入了解指針,看完以後對指針不再害怕。
《C陷阱與缺陷》 正如書上所說,“本書所揭示的知識,至少能夠幫助妳減少 C 代碼和初級 C++ 代碼中 90% 的 Bug”,看完後可以避免 C 語言開發的壹些坑。
網課
1、《郝斌C語言自學教程》
2、《程序設計入門——C語言》(浙大翁愷)
小項目
包括C語言迷宮、24點遊戲、奔跑的火柴人、超市管理系統、打字母、電子時鐘、對對碰、俄羅斯方塊、黑白棋、華容道、火車票訂票管理源碼、連連看、商品銷售系統、象棋、超級瑪麗、圖書管理系統、學生成績管理系統。