二級指標
測試**
.陣列指標是指標,意為指向陣列的指標;
指標陣列是陣列,意為陣列內部儲存著指標的陣列。
陣列指標具有如下特性1
:陣列指標用於指向乙個陣列;
陣列名是陣列首元素的起始位址,但不是陣列的起始位址,通過取位址符&
作用域陣列名可以得到陣列的起始位址;
可以通過陣列型別定義陣列指標如:arraytype *pointer
,也可以直接定義type (*pointer)[n]
。
下面的**建立了兩個指向陣列起始位址的指標p1
,p2
。
//建立陣列
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 <<
"----------------------"
輸出結果如下:
------------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是指標...