指標的型別和指標所指向的型別很明顯是不一樣的東西,但好多情況下卻容易忽視它們的區別。指標的型別是指標自身的型別,而指標所指向的型別是指標指向的資料(記憶體)的型別。
從語法上來看,我們只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別。如:
1int *ptr; //
指標的型別是 int*
2char *ptr; //
指標的型別是 char*
3int **ptr; //
指標的型別是 int**
4int (*ptr)[3]; //
指標的型別是 int(*)[3]
5int *(*ptr)[4]; //
指標的型別是 int*(*)[4]
從語法上來看,我們只要把指標宣告語句中的指標名字和名字左邊的指標宣告符*去掉,剩下的就是指標所指向的型別。 如:
1int *ptr; //
指標所指向的型別是 int
2char *ptr; //
指標所指向的的型別是 char
3int **ptr; //
指標所指向的的型別是 int*
4int (*ptr)[3]; //
指標所指向的的型別是 int()[3]
5int *(*ptr)[4]; //
指標所指向的的型別是 int*()[4]
請看小程式:
1int *p[3];2
for (int i = 0; i < 3; i++)
3
實際上這個小程式是有問題的。我們定義了乙個指標陣列,陣列裡的每個元素儲存的都是指標。所以p[i] = i相當於要將int強制轉換成int *型別,這當然不行(p[i] = (int *) i 就可以)。
可把程式修改如下:
1int *p[3];2
for (int i = 0; i < 3; i++)
3
請看小程式:
1int (*p)[3
];2 p = new
int[3];3
for (int i = 0; i < 3; i++)
4
上邊程式的int (*p)[3]其實相當於int p[3](注意這時p就變成不可更改的左值了)。
指標的型別 指標所指向 指向指標的引用
從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部 分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各 個指標的型別 int ptr 指標的型別是int char ptr 指標的型別是char int ptr 指標的型別是int int ptr 3 指標的型別是int 3...
指標的型別和指標所指向的型別說明
2010 03 17 15 24 1774人閱讀 收藏 舉報 編譯器c 1.指標的型別 從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部 分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各 個指標的型別 1 int ptr 指標的型別是int 2 char ptr 指標...
不要傷害指標(2) 指標的型別和指標所指向的型別
在談論指標之前,永遠記住指標的四要素 指標的型別,指標所指向的型別,指標指向的記憶體區,指標自身佔據的記憶體。指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別 指標所指向的型別 指標的值或者叫指標所指向的記憶體區 指標本身所佔據...