如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。在前面已經介紹過,通過指標訪問變數稱為間接訪問。由於指標變數直接指向變數,所以稱為「單級間址」。而如果通過指向指標的指標變數來訪問變數則構成「二級間址」。
從下圖可以看到,name是乙個指標陣列,它的每乙個元素是乙個指標型資料,其值為位址。name是乙個資料,它的每乙個元素都有相應的位址。陣列名name代表該指標陣列的首位址。
name+1是mane[i]的位址。name+1就是指向指標型資料的指標(位址)。還可以設定乙個指標變數p,使它指向指標陣列元素。p就是指向指標型資料的指標變數。
怎樣定義乙個指向指標型資料的指標變數呢?如下:
char **p;
p前面有兩個號,相當於(p)。顯然*p是指標變數的定義形式,如果沒有最前面的,那就是定義了乙個指向字元資料的指標變數。現在它前面又有乙個*號,表示指標變數p是指向乙個字元指標型變數的。*p就是p所指向的另乙個指標變數。
從下圖可以看到,name是乙個指標陣列,它的每乙個元素是乙個指標型資料,其值為位址。name是乙個陣列,它的每乙個元素都有相應的位址。陣列名name代表該指標陣列的首位址。name+1是mane[i]的位址。name+1就是指向指標型資料的指標(位址)。還可以設定乙個指標變數p,使它指向指標陣列元素。p就是指向指標型資料的指標變數。
則,第乙個printf函式語句輸出name[2]的值(它是乙個位址),第二個printf函式語句以字串形式(%s)輸出字串「great wall」
使用指向指標的指標
main();
char **p;
int i;
for(i=0;i<5;i++)
}說明:p是指向指標的指標變數。
乙個指標陣列的元素指向資料的簡單例子。複製純文字新視窗
main();
int*num[5]=;
int**p,i;
p=num;
for(i=0;i<5;i++)
}
C語言的指標
1 num 使num對應的記憶體空間的值加一 0x1000 0x1004 2 p p所指向的記憶體空間的值加一 3 p p對應的記憶體空間的值加一 0x1000 0x1001 指向的記憶體空間 根據指標變數對應的記憶體空間儲存的位址,再找到該位址所對應的記憶體空間 int p 整型指標的指標的指標變...
C語言的指標
const與指標 遵循靠近誰就修飾誰的原則 1.const int p 靠近所以修飾指標所指向的值,因而指標指向的值不可以修改。但是原來變數可以修改,只是不能用 p修改而已 2.int const p 和上面一樣。3.int const p 靠近變數本身,所以指標位址不能修改。4.const int...
C語言的指標
目錄 一 位址 指標 二 指標變數 指標變數的運算 指標和陣列名 指標作為函式形參 三 指標型別 常見指標 陣列指標 二級指標 二維陣列指標 指標陣列 指標函式 函式指標 計算機中所有的資料都必須放在記憶體中,為了正確地訪問這些資料,必須為每個位元組都編上號碼,每個位元組的編號是唯一的,根據編號可以...