C 陣列指標 指標陣列與二級指標

2021-09-22 01:46:13 字數 3552 閱讀 1587

二級指標

測試**

.陣列指標是指標,意為指向陣列的指標;

指標陣列是陣列,意為陣列內部儲存著指標的陣列。

陣列指標具有如下特性1

:陣列指標用於指向乙個陣列;

陣列名是陣列首元素的起始位址,但不是陣列的起始位址,通過取位址符&作用域陣列名可以得到陣列的起始位址;

可以通過陣列型別定義陣列指標如:arraytype *pointer,也可以直接定義type (*pointer)[n]

下面的**建立了兩個指向陣列起始位址的指標p1p2

//建立陣列

int a[3]

=;//type (*pointer)方法定義陣列指標

int(

*p1)[3

];p1 =

&a;//arraytype* pointer方法定義陣列指標

typedef

int(aint3)[3

];aint3* p2 =

&a;

指標資料具有如下特性:

指標陣列是乙個普通的陣列,陣列中的每個元素都是指標;

指標陣列的定義為:type *parray[n];

下面的**建立了乙個陣列,陣列內部儲存的變數為a *型別。

//定義類a

class aa(

int a1,

int a2)

public:

int _a1;

int _a2;};

//建立儲存a*型別變數的大小為3的陣列arr

a* parr[3]

;parr[0]

= new a(0

,1);

parr[1]

= new a(1

,2);

parr[2]

= new a(2

,3);

.

.二級指標即為指向指標的指標。

指標變數在記憶體中占用一定的空間;

可以定義指標來儲存指標變數的位址值;

為什麼需要指向指標的指標?

指標本質上也是變數,對於指標同樣也存在傳值呼叫和傳址呼叫。

指向指標陣列的陣列指標定義形式為:

//沿用上文定義的類a

a* parr[3]

;parr[0]

= new a(0

,1);

parr[1]

= new a(1

,2);

parr[2]

= new a(2

,3);

a*(*pa)[3

];pa =

&parr;

其使用方法與陣列指標並無區別,首先用*pa取得parr的位址,用*(*pa)取得parr[0]的位址,隨後即可用->操作符訪問類a中的成員變數。

用二級指標也可以得到相同的效果:

a*

* pb = parr;

使用時用*pb即可取得parr[0]的位址。

有關二維陣列與陣列指標、二級指標方面的混合應用可參考《指標 中 陣列指標,指標陣列,陣列傳參,指標傳參》一文。2

#include

using namespace std;

typedef

int(aint3)[3

];class aa(

int a1,

int a2)

public:

int _a1;

int _a2;};

intmain()

;int

(*p1)[3

];p1 =

&a; aint3* p2 =

&a;

cout <<

"---------a[3]---------"

"&a: "

<<

&a << endl;

cout <<

"*p1: "

<<

*p1 << endl;

cout <<

"*p2: "

<<

*p2 << endl;

cout <<

"----------------------"

; parr[0]

= new a(0

,1);

parr[1]

= new a(1

,2);

parr[2]

= new a(2

,3);

a*(*pa)[3

];pa =

&parr;

a** pb = parr;

cout <<

"---------parr---------"

"&arr: "

<<

&parr << endl;

cout <<

"arr[0]: "

<< parr[0]

<< endl;

cout <<

"*pa: "

<<

*pa << endl;

cout <<

"**pa: "

<<

**pa << endl;

cout <<

"pb: "

<< pb

*pa)

->_a1 << endl;

cout <<(*

(pb+2)

)->_a1

"----------------------"

}

輸出結果如下:

------------a[3]------------

&a: 0x7ffc642476f4

*p1: 0x7ffc642476f4

*p2: 0x7ffc642476f4

-----------------------------

------------parr-----------

&arr: 0x7ffc642476d0

arr[0]: 0x23d7c30

*pa: 0x7ffc642476d0

**pa: 0x23d7c30

pb: 0x7ffc642476d002

-------------------------------

指標陣列和陣列指標↩︎

指標 中 陣列指標,指標陣列,陣列傳參,指標傳參↩︎

二維陣列 指標陣列 陣列指標 二級指標

include 指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an array,即指向陣列的指標 int a 4 指標陣列 表示 陣列a中的元素都為int型指標 優先順序高於 元素表示 a i int a 4 陣列指標...

一級指標 二級指標 指標和陣列 指標陣列

一級指標 int p 上述 定義了乙個一級指標變數,int為基型別。指標變數的基型別用來指定此指標變數可以指向的變數的型別。一級指標變數也就是儲存著另外乙個變數位址的變數 在定義指標時應注意指標變數必須指定基型別。且必須給指標變數賦初值,在不確定該指標變數要指向什麼的時候應該給其賦null,否則該指...

一級指標 二級指標 指標和陣列 指標陣列

一級指標存放的是變數的位址 一級指標名就可以等於這個位址 二級指標存放的是一級指標的位址,同樣指標名就是這個位址 陣列指標是乙個指標 它所存放的位址是陣列變數的位址,即指向不同陣列 所以說一級指標 二級指標 陣列指標都是指標,只是型別不同 而指標陣列,是乙個陣列,他存放的資料型別是指標型別 p是指標...