我們先來看下指標陣列和陣列指標的定義:
指標陣列:資料型別 *陣列名[元素個數]; 如:int *a[10]; a表示乙個含有10個指向int型別的指標元素的陣列;
陣列指標:資料型別 (*陣列名)[元素個數]; 如: int (*a)[5]; a表示乙個指向含有5個int型別元素陣列的指標;
本質區別:
指標陣列 本質上是乙個陣列,只是陣列中的元素均為指標;
陣列指標 本質上是乙個指標,只是指向的內容是乙個陣列;相當於乙個二維陣列,也稱陣列指標為指向一維陣列的指標,行指標,列數需要明確。
指標陣列的賦值和長度確定:
例如:int a[10],b[5],c[10];
int *p[3]=;
我們都可以很清楚的知道sizeof(a)=40,sizeof(b)=20,sizeof(c)=40,但是sizeof(p)=100嗎,答案是 否。由於p是指標陣列,所放的內容都是指標而並非最終的值,指標陣列中又幾個元素就意味著有幾個指標,在上述例中,p中包含有3個指標,並且為int型,所以sizeof(p)=12個位元組。
陣列指標的賦值和長度確定:
陣列指標相當一乙個二維陣列,所以可以通過二維陣列給陣列指標賦值
注意:當陣列指標指向的陣列包含的元素個數和二維陣列的列數相等時才能進行賦值
例如:int a[5][10];
int (*p)[10]=a;
c語言 陣列與指標的那些事
正文開始 由於是提高篇 所以不對簡單的指標和陣列解釋 includeint main 定義乙個一維陣列 int p a 定義乙個指向int的指標 指向陣列a的首位址 printf p p n a,a 1 printf p p n p,p 1 printf d d n p 0 a 0 return 0...
指標與陣列,指標陣列 陣列指標
int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...
陣列 指標陣列與陣列指標
一 陣列型別 int a 10 printf a d,a 1 d n a,a 1 printf a d,a 1 d n a,a 1 輸出結果 2 陣列元素的首位址是常量,不能修改,這是為了釋放記憶體空間所必需的,否則找不到釋放記憶體空間的首位址了 3 定義乙個陣列型別 定義陣列型別的格式如下 typ...