C語言自我檢測

2021-09-14 00:11:51 字數 2137 閱讀 7146

1.預處理命令 (預編譯階段)

巨集定義:定義一些寫文用到的變數 而且出現較多次又不好修改 謹記 只是普通的字元替換

檔案包含: 引入一些檔案

條件編譯: 只有在條件成立的條件下會執行這些**

2.巨集定義和typedef 的區別

巨集定義:只是普通的字元替換 在預編譯階段

typedef: 真真正正宣告一種型別 在編譯階段有效 typedef 取別名 簡化複雜型別

3.各種基本型別 int char float double long unsigned int short int (各種型別所佔的位元組)

int (4位元組 32位)

char (1位元組 8位)

float (4位元組 32位)

double (8位元組 32位)

long (4位元組 32位)

unsigned int (4位元組 32位)

short int (2位元組 16位)

4.指標 宣告方式 int* a;

int b;

內部儲存的是乙個位址 a = & b;

*a 表示取值 這樣這個int 就用上了 解析為int 的乙個值

&b 表示取位址

而對於 a這個指標而言 它的位址就是 &a;

5.函式指標 函式指標就是指向函式的指標 int (* pointer)();

() 表示函式 int 是函式的返回值 並且(* pointer)必須加括號 才會表示是指標

6.函式引數的傳遞方式 值傳遞 位址傳遞 引用傳遞

值傳遞:等於在棧上重新分配空間進行計算 如果不反回就不會對實參造成影響

void print(int *a) //如果a本來就是乙個指標 然後傳入a 就是值傳遞

void print(int **a) //如果a本來就是乙個指標 然後傳入&a 就是位址傳遞

位址傳遞:將實參的位址傳過來,對實參位址上的數進行修改等於修改實參,但是實參的位址沒變

引用傳遞:就是實參的乙個別名,別名就是對實參進行修改

7.陣列 (陣列指標 指標陣列)

陣列 char *a =「123456」 與 char a =「123456"的區別

記憶體的呼叫 char *a 的"123456」 直接放入了常量去 而 a 只是指向了第乙個字元的乙個位址 結束的話 「123456」 會自動加乙個\0 結束

記憶體的呼叫 char a =「123456」 而會把 乙個字元乙個字元賦值到 陣列裡

陣列指標:int (*a) 指向乙個陣列的指標 必須加()

指標陣列:int * a 一維陣列內部存放的都是指標

8.記憶體分割槽

堆: 使用者自己分配,自己new delete malloc 和 free的, 增長方式由低向高增長

棧:系統管理控制的,裡面的變數通常是區域性變數、函式引數 增長方式由高向低增長

常量區: 文字常量 「123456」

全域性/靜態儲存區: 存放全域性變數和 靜態變數的

**區:存放二進位制**的

9.結構體 將一系列變數合為一體,當作乙個變數

結構體所佔記憶體的大小 是最長變數型別的整數倍 如double int char 和其他的一些型別 應該是8位元組的倍數

結構體指標 指向結構體的指標

鍊錶: 在處理head頭指標的時候 注意引數傳遞的型別

10.檔案的讀寫

注意讀檔案的型別 file *fp;

fp =fopen(「d:\a.txt」,「a」)

11.位運算

每一位進行運算 迴圈移位

可以代替 設中間變數 a = a ^ b; b = b ^ a; a = b ^ a;

12.void * p指標

這個指標只是指向乙個位址 可以強轉為其他型別 ,在記憶體分配時用

stu stu1 =(stu) malloc(sizeof(struct stu));

13.scanf的使用

scanf("%c %c\n", &a, &b); 注意空格 否者有可能會失敗

14.git 的使用 gitignore

gitignore 如果在專案已經上傳過一次 以後 需要忽略的已經有記憶體了需要先清理一下已經包含的 git rm -r --cached .idea

14.編譯器clion的除錯

需要更改配置,否則無法進行輸入 除錯需要調節模式 mingw gdb

自我檢測3

1模擬實現strncpy 詳見 我的部落格 字串操作函式模擬實現大全 2.模擬實現atoi函式,將數字字串自動轉化為十進位制數字輸出 例如給出字串 12345 輸出12345.劍指office 習題 程式實現 include include includeint my atoi const char...

iOS 自我檢測

1.id 和 nsobject的差別?2.uitableviewcell的復用原理?3.uiview生命週期和uilayer的差別?4.多執行緒nsoperation和queue gdc thread的使用差別和優缺點?5.uibutton繼承那個類?6.記憶體管理原理和幾種屬性語義?7.alloc...

5 9自我檢測(一)

1 編寫並測試乙個代表位址的address類,位址資訊由國家 省份 城市 街道 郵編等組成 public class address public void setcountry string country public string getprovince public void setprov...