關於陣列指標:
1 對於二維陣列,初始化時,必須指定乙個引數: int a [3] =,,}, int a ={} 這樣是不允許的,因為要確定指標移動一步要走多遠。 對於一位陣列int a = {},這樣可以。也就數說只有乙個引數位置可以不用設定引數。
2 int (*p)[3] 必須加上小括號,這代表乙個指向陣列的指標,數字3,代表每一列有三個數。這樣就定義了乙個,二位陣列。
p[0]代表第一行的第乙個數的位址,p[1]代表第二行的第乙個數的位址,p[2]代表第三行的第乙個數的位址,注意與一位陣列的
區別,對於一位陣列p[0]代表第乙個數字的實際值,而不是位址,但是對於二維陣列p[0]代表的卻是乙個位址,要想得到這個位址的值
還要加上*號,如:*(p[0]),這代表第一行的第乙個數字的實際值,也可以這樣表達: a[0][0],這種表達方式就與一維陣列的表達方式一樣了。a[0][0] 就相當於 *(*(a+0)+0) , 相當於 *(a+0)[0], 相當於*(a[0]+0), 全都是在表達二位陣列的第一行的第乙個數的實際值,而不是位址值。
總結: 二位陣列的指標的使用方式依舊是從一位陣列的指標的使用方式來的,即:在一維陣列中a[0]=*(a+0),
在二維陣列中a[0]已經不再表示實際值了,而是表示位址值,但是a[0][0]=*(*(a+0)+0), 依舊表示的是實際值而不是位址,這還是相當於一維陣列。
#includeintmain()
,}; printf(
"1這是第一行第乙個元素的值:%d\n
",a[0][0
]); printf(
"2這是第一行第乙個元素的值:%d\n
",*(*(a+0)+0
)); printf(
"3這是第一行第乙個元素的值:%d\n
",(*(a+0))[0
]); printf(
"4這是第一行第乙個元素的值:%d\n
",*(a[0]+0
)); printf(
"-------------\n");
printf(
"",a[0
]); printf(
"這是第一行第乙個元素的數值:%d\n
關於指標的陣列:
int * a[2] 代表著指標的陣列, 2 代表著 指標每走一步,向前走多遠。
int b[2]=,}
a[0] = b[0] 存放著二維陣列b 的第0行的第0個元素的位址,注意b[0] 代表的是位址,而不是實際值
a[1] = b[1] 存放著二維陣列b第一行的第乙個元素的位址,注意b[1]代表的是位址,而不是實際值。
#includeintmain()
,}; a[
0] = b[0]; //
第乙個行第乙個元素的位址
a[1] = b[1]; //
第二行第乙個元素的位址
printf("
%d\n
",a[0]); //
列印位址值
printf("
%d\n
",a[1
]); printf(
"%d\n
",*(a[0])); //
列印實際值
printf("
%d\n
",*(a[1
]));
return0;
}//conclusion 關於指標的陣列 int a[2],必須指明有幾個元素,不同於一位陣列。
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個整型資料的長度。如要將二維陣列賦給一指標,應這樣...
指標與陣列,指標陣列 陣列指標
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...