C語言的指標

2021-07-25 07:10:44 字數 1063 閱讀 6680

《const與指標》

遵循靠近誰就修飾誰的原則

1.const int p; //靠近所以修飾指標所指向的值,因而指標指向的值不可以修改。(但是原來變數可以修改,只是不能用*p修改而已)

2.int const *p;//和上面一樣。

3.int *const p;//靠近變數本身,所以指標位址不能修改。

4.const int *const p = &a; //這樣指標所指向的值和指標位址就都不能修改了(但是好像沒什麼卵用)

tip:*p表明訪問的是指標所指向的值,而p表示指標位址。

《指標加法》

對於乙個 char 指標

char *p; //假設位址為 000001;

如果 p + 1那麼是等於 000002;

對於乙個 int 指標

char *p; //假設位址為 000001;

如果 p + 1那麼是等於 000005;

也就是說,+1不是真的+1而是加sizeof(資料型別)大小,乙個指標代表乙個位元組。

《指標減法》

以int為例

int i[10] =

int *p = i;

int *p1 = &i[6];

int cout = p1 - p;//這裡的結果是6。

指標的減法是算出兩個指標間相隔多少個int大小的空間。

上面哪行 int cout = p1 - p;

也就相當於 int count = (p1 - p) / (sizeof(int)) // 結果等於6

《指標的誤用》

本質上指標都是乙個記憶體位址,乙個十六進製制數。

那麼對於

char c = 『a』; //假設位址為:000001

int *a = &c;

也是能成立的,但是編譯器會給出警告,在使用的時候如果 *a = 0,那麼就意味著 000001 - 00003的位址每乙個位元組都要變成0。因為電腦認為你操作的是int資料型別,所以會同時操作4個位元組,而不是char的1個位元組。

C語言的指標

如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。在前面已經介紹過,通過指標訪問變數稱為間接訪問。由於指標變數直接指向變數,所以稱為 單級間址 而如果通過指向指標的指標變數來訪問變數則構成 二級間址 從下圖可以看到,name是乙個指標陣列,它的每乙個元素是乙個指標...

C語言的指標

1 num 使num對應的記憶體空間的值加一 0x1000 0x1004 2 p p所指向的記憶體空間的值加一 3 p p對應的記憶體空間的值加一 0x1000 0x1001 指向的記憶體空間 根據指標變數對應的記憶體空間儲存的位址,再找到該位址所對應的記憶體空間 int p 整型指標的指標的指標變...

C語言的指標

目錄 一 位址 指標 二 指標變數 指標變數的運算 指標和陣列名 指標作為函式形參 三 指標型別 常見指標 陣列指標 二級指標 二維陣列指標 指標陣列 指標函式 函式指標 計算機中所有的資料都必須放在記憶體中,為了正確地訪問這些資料,必須為每個位元組都編上號碼,每個位元組的編號是唯一的,根據編號可以...