記憶體:
記憶體管理方法:棧、堆、**段(.txt)、資料段(.data)、bss段(.bss)
棧:自動:編譯器自動申請和釋放,如區域性變數的管理。
空間小:注意申請陣列空間大小(比堆小)
棧溢位情況:陣列定義過大、遞迴深度太深容易使棧溢位
動態區域性變數的生命週期和作用域:被定義的區域性函式內部,區域性函式結束,資源釋放,區域性變數消失
靜態區域性變數的生命週期和和作用域,如同全域性變數。
堆:手動:程式設計師手動申請(malloc)和釋放(free)
非連續:有斷層
空間大:可申請很大一塊區域(比棧大)
堆溢位:分配空間太大
生命週期和作用域:malloc開始、free結束
**段(.code):
函式、字串常量、const修飾的變數const char * p = "linux";
資料段(.data)
存顯示初始化非0的放全域性變數、靜態區域性變數
bss段(.bss)
初始化為0的資料段
存未顯示初始化或顯示初始化為0的全域性變數和靜態區域性變數
大小端:
大端:記憶體高低位: 0001(1存在低位) 1000(1存在高位)
0001
反則大端
1.問題?如何確定機器的大小端
#include union un
;int main(void)
;if (u.c == 1) printf("little\n");
else printf("big\n");
return;
}計算機最小計算單位:位
變數: 指標、字串(ascii)、陣列(sizeof、strlen)、共用體(union)、結構體(typedef、struct)、列舉(enum)、巨集定義(define)
2.字串表示方法
2.1 由字元組成以'\0'為結束符。char *p = "linux"; 字元指標p指向"linux"儲存區,字串"linux"長度5,占用空間6byte,結束符'\0',"linux"值是'l'的位址
2.2 char p = ; p為陣列占用6byte。
2.3 sizeof()字面量,檢視型別和變數占用記憶體大小。strlen()計算字串長度不報考'\0',
3.共用體:成員變數共用一塊記憶體,解析方式(取值長度)不同,占用成員變數最大的記憶體
4.結構體:將多個不同型別變數放到一起,一般按照4位元組(32位機)對齊取值
5.巨集定義:用來替換單個東西
5.列舉:用來替換多個有關聯的東西
函式:字串函式、遞迴函式、函式庫(數學庫函式)
儲存類、作用域、生命週期、鏈結屬性
1.字串函式
2.1處理:strcpy、strncpy、strcat、strncat
2.2比較:strcmp、strncmp、strsrt
2.3記憶體:memset、memcpy、memcmp
處理字串注意結束符'\0'是否被賦值,已經賦值結束後剩餘部分是否清零
修飾符(關鍵字):
auto、static、register、const、voliate、extern、restrict、typedef
程式執行過程:
預處理(巨集(define))、編譯、彙編、鏈結(鏈結庫)
資料結構:
鍊錶(link)、棧(stack)、佇列(queue)、二叉樹(tree)
演算法:查詢(順序、二分)、排序(二分、冒泡、歸併、快排)
時間和空間效率
系統程式設計與網路程式設計:
刷題: 劍指
專案:
c 知識點總結
1 c 中判斷物件為空的幾種方式 1 先了解幾個與空型別相關的關鍵字和物件 null 關鍵字表示不引用任何物件的空引用,它是所有引用型別變數的預設值,在2.0版本之前也就只有引用變數型別可以為null,如 string a null 但在c 2.0版本之後,net也引入了可以為null的值型別,但變...
C 知識點總結
程式 資料結構 演算法.c語言是面向過程的,面向過程就是分析出解決問題的步驟,然後用函式將其實現,使用時依次呼叫.程式 物件 訊息.c 是物件導向的,c 物件導向是將構成問題的事物分解成各個物件,每個物件完成在解決整個問題中的行為.主要特點是類,封裝,繼承,多型等。物件導向的語言具有更好的可擴充套件...
C 知識點總結
變數和常量 命名變數 在c 中,使用變數的基本原則是先定義後使用。其命名規範如下 1.必須以字母或下劃線開頭 2.只能由字母 數字 下劃線組成,不能 包含空格 標點符號 運算子及其他符號 3.不能與c 關鍵字同名,如class,new等 例如,正確命名 int i 整型變數 stringuser n...