指標的型別與指標所指向的型別

2022-03-27 01:33:51 字數 1289 閱讀 3954

指標的型別和指標所指向的型別很明顯是不一樣的東西,但好多情況下卻容易忽視它們的區別。指標的型別是指標自身的型別,而指標所指向的型別是指標指向的資料(記憶體)的型別。

從語法上來看,我們只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別。如:

1

int *ptr; //

指標的型別是 int*

2char *ptr; //

指標的型別是 char*

3int **ptr; //

指標的型別是 int**

4int (*ptr)[3]; //

指標的型別是 int(*)[3]

5int *(*ptr)[4]; //

指標的型別是 int*(*)[4]

從語法上來看,我們只要把指標宣告語句中的指標名字和名字左邊的指標宣告符*去掉,剩下的就是指標所指向的型別。 如:

1

int *ptr; //

指標所指向的型別是 int

2char *ptr; //

指標所指向的的型別是 char

3int **ptr; //

指標所指向的的型別是 int*

4int (*ptr)[3]; //

指標所指向的的型別是 int()[3]

5int *(*ptr)[4]; //

指標所指向的的型別是 int*()[4]

請看小程式:

1

int *p[3];2

for (int i = 0; i < 3; i++)

3

實際上這個小程式是有問題的。我們定義了乙個指標陣列,陣列裡的每個元素儲存的都是指標。所以p[i] = i相當於要將int強制轉換成int *型別,這當然不行(p[i] = (int *) i 就可以)。

可把程式修改如下:

1

int *p[3];2

for (int i = 0; i < 3; i++)

3

請看小程式:

1

int (*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) 指標的型別和指標所指向的型別

在談論指標之前,永遠記住指標的四要素 指標的型別,指標所指向的型別,指標指向的記憶體區,指標自身佔據的記憶體。指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別 指標所指向的型別 指標的值或者叫指標所指向的記憶體區 指標本身所佔據...