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