C++數組的指針、指針數組、指針數組的指針的聲明


C++數組的指針、指針數組、指針數組的指針的聲明有點繞,防止後面繞暈記不住所以記錄下。

指針數組

int *ap[3];

爲啥[3]要放在這裏呢?[]優先級要高於*,所以[3]表明三個元素的數組,剩下的描述元素的類型,*表明數組元素爲指針,int表明指針指向int類型。所以該聲明爲:具有3個指向int類型的指針的數組。

數組的指針

int (*pa)[3];

[3]表明爲三個元素的數組,剩下的部分就是描述元素的類型。(*pi)是一個整體,表明是一個指針變量,變量名爲pa。int表明元素爲int類型。解釋爲:具有3個int類型元素的數組的指針。

指針數組的指針

int *(*pap)[3];

知道指針數組的聲明*ap[3],那麼替換ap變量爲一個指針(*apa),代入進去爲*(*apa)[3]就是指針數組的指針了。
反過來,我們將上面的(*pap)看成一個叫pa的變量名爲:int *pa[3];它就是具有3個指向int類型的指針的數組,那麼該數組的引用,就將pa這個變量名變爲一個指針變量,替換爲*pap然後代進去加上括號就是上面的聲明瞭int *(*pap)[3];:一個具有3個指向int類型的指針的數組的指針。

類型指針啥的太麻煩了,有點記不住,C++11版本新增的auto關鍵字可以省略類型的定義,讓編譯器來判定值的類型。

關於CLion編輯器本地變量定義小技巧

上面一堆指針啥類型啥的,太麻煩了。如果不適用auto關鍵字,想要自己顯示的定義一個複雜的類型,比如"指針數組的指針類型"或者"函數指針數組的指針"的聲明,還是比較費勁的。
CLion的自動創建本地變量的功能很有用。菜單:Main menu | Refactor | Extract | Introduce Variable...可以生成本地變量。
使用快捷鍵的演示如下:
在這裏插入圖片描述
使用CLion的快速創建變量的功能,很方便的就根據右值創建了左邊的符合的類型變量。

CLion設置裏面keymap搜Introduce Variable可以看到你的快捷鍵。

代碼

int a[3];                          //3個int類型元素的數組
a[0]=1;
a[1]=2;
a[2]=3;
int (*pa)[3] = &a;                 //3個int類型元素的數組的指針
int *ap[3] = {&a[0], &a[1], &a[2]};//3個int類型元素的指針的數組
int *(*pap)[3] = ≈              //3個int類型元素的指針的數組的指針
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章