C語言中不被人注意的一些東西(筆記)

2021-09-05 08:47:01 字數 1308 閱讀 8278

.c 或者.cpp 檔案 原始檔;

預編譯形成.i檔案;

編譯形成.o或者.obj二進位制可執行檔案;

鏈結形成.exe檔案;

在預編譯階段執行 進行替換 不進行型別檢驗 不進行分配空間;

用於預編譯處理階段;將巨集引數轉換為字串;只有巨集定義中使用#define;

例子:#define maxlenth 100

在編譯階段進行 進行型別檢測 進行分配空間;

乙個比較常用的c/c++的雜注,只要在標頭檔案的最開始加上這個;就能保證標頭檔案只被編譯一次;

用於預處理階段,將粘連兩個識別符號,只有巨集定義中使用;

例子:

#define connect(a,b) a##b

int conect(a,1); //int a1

a1 = 2;

指標有三個值 &p是指標p的位址;

p是指標p自身的值;

*p是指標p指向的值;

int *p = &a;   // & *p<=>&a; *&p<=>&a;

int *p = &b; //把b的位址給p ,*是識別符號;*p是p指向的值;

student *st st為指標;引用時為st->s_name//st->s_id;

student &sp sp為別名;引用時為sp.s_name

1.**區:存放函式體的二進位制**;

2.資料區/data:全域性變數,靜態變數和常量是分配在資料區中的,資料區包括bss(未初始化資料區)和初始化資料區。

3.堆區/heap:由程式設計師手動分配和釋放空間,通過mallic/new等關鍵字申請;使用完後必須釋放;使用free(p);釋放後p為失能指標或失效指標;

4.棧區/ stack:由編譯器自動分配釋放,儲存函式內部的區域性變數的值,函式引數的值和自定義物件的引用和函式的返回位址;是由系統自動分配的,一般速度較快;儲存位址是連續且存在有限棧容量,會出現溢位現象。

注意:

未初始化資料區(bss):用於存放程式的靜態變數,這部分記憶體都是被初始化為零的;而初始化資料區用於存放可執行檔案裡的初始化資料。這兩個區統稱為資料區。

int

main()

C語言中一些不被熟知的特性

c99允許你對結構體中指定的變數初始化,如 struct foo foo foo 這其中x會預設初始化為 0指定初始化也可適用於陣列,如下面三個等價的陣列定義 int a 5 int a int a 5 限定詞restricted用於限定乙個指標 如名 告訴編譯器該指標的記憶體訪問在任何情況下都只能...

c語言中的一些注意點

1.指標函式和函式指標的區別 1 指標函式是指帶指標的函式,即本質是乙個函式。函式返回型別是某一型別的指標 型別識別符號 函式名 參數列 int f x,y 首先它是乙個函式,只不過這個函式的返回值是乙個位址值。函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調...

C 一些有用的東西

雜 1.自定義控制項public屬性如何不在initializecomponent中生成?可以使用特性 designerserializationvisibility designerserializationvisibility.hidden 2 在一些無法在窗體內捕獲的事件可以使用imessag...