乙個陣列的元素值為指標則是指標陣列。
指標陣列的所有元素都必須是具有相同儲存型別和指向相同資料型別的指標變數。
指標陣列說明的一般形式為:
型別說明符 *陣列名
[陣列長度]
其中型別說明符為指標值所指向的變數的型別。
例如:
int*pa[3];
表示pa
是乙個指標陣列,它有三個陣列元素,每個元素值都是乙個指標,指向整型變數。 v
不要把&a[i]
簡單的理解為a[i
]的實體地址,因為並不存在a[i
]這個變數。它只是一種位址的計算方法,能得到第
i行的位址。 v
&a[i]和
a[i]的值是一樣的,但它的含義卻不同。
&a[i]或
a+i指向行,而a[i
]或*(a+i
)指向列。當下標
j=0時,
&a[i]和
a[i]+j的值相等。*(
a+i)
只是a[i]
的另一種表示形式。在二維陣列中,
a+i=a[
i]=*(
a+i)=&a[
i]=&a[
i][0]
即它們的位址值是相等的。 u
inta[5][10]
與int
(*p)[5]; 二
維陣列名是乙個指向有
10個元素的一維陣列的指
針常量
u p=
a+i使
p指向二維陣列的第i行
*(*(
p+i)+j) ûa[
i][j] u
二維陣列形參實際上是一維陣列指標變數,
即
intx[ ][10]
ûint
(*x)[10]
變數定義(不是形參)時兩者不等價,
系統只給
p分配能儲存乙個指標值的記憶體區(一般2位元組
);而給
a分配2*5*10位元組的記憶體區
二維陣列 二維陣列和指標
include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...
c 二維陣列賦值及二維指標使用
include void main int tmp 2 test printf value d n tmp 0 printf value d n tmp 0 printf value d n tmp 1 printf value d n tmp 1 printf value d n tmp 0 1 ...
二維陣列與二維指標
1.二維陣列的儲存是線性的,可以通過一維指標的方式訪問。如一下 int map 5 5 int mapd map 0 0 則 map i j mapd i 5 j 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...