指標陣列即為包含了多個指標的陣列;而陣列指標指的是指向陣列的指標。
指標陣列中的每個元素都是指標,而多維陣列是陣列的陣列。因此,指標資料與多維陣列類似。指標陣列歸根到底也屬於陣列,因此,其定義的方式為
(型別名
) 識別符號
[陣列維數]
只不過此時的型別名為指標型別。例如
(int*)myarray[2];
定義了乙個包含2
個元素的陣列,該陣列中的每個元素都是指向整數的指標。
圖1 指標陣列
陣列指標的本質是指標,因此其定義的格式與指標類似
型別名 (*識別符號)
例如
int (*mypoint)[2];
需要從內向外讀取mypoint
的宣告,首先讀取括號內的內容,
mypoint
是乙個指標,接下來向外讀取,該指標指向的型別是
int[2]
,即mypoint
是乙個指向含有
2個整形元素的陣列的指標。
圖2 陣列指標
使用陣列指標和整形指標遍歷二維陣列的**是
int(*array_point)[2];
int *int_point;
int array_matrix[2][2] = ;
for (array_point = array_matrix; array_point < array_matrix + 2; ++array_point)
}
使用auto
可以代替陣列指標。
auto
是型別說明符,在
c++11
中引入的新標準。使用
auto
型別說明符,可以讓編譯器替我們分析表示式所屬的型別。例如,
auto item = val1+val2;
此處編譯器將根據val1
和val2
相加的結果來推斷
item
的型別,如果
val1
和val2
是int
,則item
的型別是
int;如果
val1
和val2
的型別是
double
,則item
的型別也是
double
。因此,使用auto遍歷二維陣列,可以避免使用陣列指標和整形指標
int array_matrix[2][2] = ;
auto array_auto = array_matrix;
auto point_auto = *array_auto;
for (; array_auto < array_matrix + 2; ++array_auto)
}
C 指標陣列與陣列指標
說實話,c語言真的很讓人蛋疼,它不像物件導向的語言,我們重心在設計程式上。而使用c語言,你不僅要考慮程式的設計,你還要考慮很多他的使用細節,不然一不小心你怎麼死的都不知道。但是,個人感覺,c語言的魅力是其他任何語言都比不了的!繼續看。陣列指標 範例 typedef int aint5 5 typed...
C 指標陣列與陣列指標
陣列指標 也稱行指標 陣列指標 a pointer to an array,即指向陣列的指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣...
指標陣列與陣列指標 C
關於陣列指標 1 對於二維陣列,初始化時,必須指定乙個引數 int a 3 int a 這樣是不允許的,因為要確定指標移動一步要走多遠。對於一位陣列int a 這樣可以。也就數說只有乙個引數位置可以不用設定引數。2 int p 3 必須加上小括號,這代表乙個指向陣列的指標,數字3,代表每一列有三個數...