C 其他小知識

2021-10-02 13:56:09 字數 1147 閱讀 7997

sizeof

系統為每乙個記憶體單元分配乙個位址值,c/c++把這個位址值稱為「指標」。如有int i=5;,存放變數i的記憶體單元的編號(位址)&i被稱為指標。

「指標變數」則是存放前述「位址值」的變數,也可以表述為,「指標變數」是存放變數所佔記憶體空間「首位址」的變數(因為乙個變數通常要占用連續的多個位元組空間)。比如在int i=5;後有一句int *p=&i;,就把i的指標&i賦給了int *型指標變數p,也就是說p中存入著&i。所以說指標變數是存放指標的變數。

有乙個事實值得注意,那就是有不少資料和教科書並沒有如上區分,而是認為「指標是指標變數的簡稱」,如對int *p=&i;的解釋是:宣告乙個int *型指標p,並用變數i的位址初始化;而嚴格說應該是宣告乙個int *型指標變數p才對。所以有時看書要根據上下文理解實質,而不能過於拘泥於文字表述。

1、指標常量——指標型別的常量(int *const p)

本質上乙個常量,指標用來說明常量的型別,表示該常量是乙個指標型別的常量。在指標常量中,指標自身的值是乙個常量,不可改變,始終指向同乙個位址。在定義的同時必須初始化。用法如下:

int a =

10, b =20;

int*

const p =

&a;*p =30;

// p指向的位址是一定的,但其內容可以修改

2、常量指標——指向「常量」的指標(const int *p, int const *p)

常量指標本質上是乙個指標,常量表示指標指向的內容,說明該指標指向乙個「常量」。在常量指標中,指標指向的內容是不可改變的,指標看起來好像指向了乙個常量。用法如下:

int a =

10, b =20;

const

int*p =

&a;p =

&b;// 指標可以指向其他位址,但是內容不可以改變

C語言 小知識

1.表示式的求值 初始值 x 1,y 1 z 1 求 x y z 答 從左到右順序依次求值,1 true 注意 因為 操作符的左運算元是true,所以沒有必要求值了.事實上c語言肯定不會繼續求值 有關規則,在按從左到右的順序對乙個邏輯表示式求值的時候,只要知道了它的實際結果,就不會對其餘部分求值.這...

c語言小知識

1 為什麼include標頭檔案後,就可以呼叫檔案中宣告的函式了?標頭檔案中一般只是函式和變數的宣告,編譯器需要知道函式傳遞的是什麼引數,否則呼叫的地方 不知道如何設定暫存器和棧等一些相關資訊。至於函式的位置,由於在其他的編譯單元中,需要鏈結 時才能找到。標頭檔案中包含了函式的宣告,其具體的函式 即...

C 小知識更新

1,結構體的使用不同於c語言,如 struct edge 其中edge可以直接用來宣告結構體型別的物件,此外 struct edgeedge1,edge2,edges 10 可以直接在結構體定義時宣告物件 2 引用與指標 引用相當於別名,只針對於乙個物件空間,不能被改變,指標是自由的,能被改變。在c...