```c
#include
intmain()
;int i;
printf
("%d\n"
,a);
// a指向a[0],a[0]int的元素,a的型別就是 int* 4,+1跨度是4個位元組
printf
("%d\n"
,a+1);
printf
("%d\n"
,&a)
;// &a這個位址指向整個陣列,int(*)[5],+1跨度是整個陣列的位元組長度,即20個位元組
printf
("%d\n"
,&a+1)
;int
*p = a;
//將a的位址賦給指標變數p,所以p指向a[0]
//訪問一維陣列元素的方法
//1、 下標法
for(i=
0;i<
5;i++
)//2、 指標法(一)
for(i=
0;i<
5;i++
)//2、 指標法(二)
for(i=
0;i<
5;i++
)//二維陣列與指標
//定義乙個二維陣列,陣列名b是第乙個一維陣列的記憶體位址!
int b[3]
[4]=
;//b的型別是int* [4],+1跨度是16個位元組
printf
("%d\n"
,b);
printf
("%d\n"
,b+1);
printf
("%d\n"
,b[0])
;//b[0]是第乙個一維陣列的第乙個元素的記憶體位址!,型別是int* ,+1跨度是4個位元組
printf
("%d\n"
,b[0]+
1);printf
("%d\n"
,&b)
;//&b這個位址指向整個陣列,+1跨度是整個陣列位元組長度,即
//訪問二維陣列的方法
//一、 下標法
printf
("%d\n"
,b[1][
2]);
//二、 用行位址
printf
("%d\n",*
(b[1]+
2));
//b[m]+n是想取出元素的位址,加上*即可取出該元素。
//三、 用陣列名
printf
("%d\n",*
(*(b+1)+
2));
//b指向b[0],b+1指向b[1],型別是int* [4],
// *(b+1)即a[1]的首位址,型別是int* ,然後再進行偏移取值。
//由法二與法三可以看出b[1]等價於*(b+1)
//總結:二維陣列陣列名的意思
//b 是int型別
//b 是int*型別
//b 是int*[4]型別, 多維陣列以此類推。
return0;
}
C語言指標陣列與陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標 指標與陣列
1 指標與一維陣列 2 指標與二維陣列 3 指標陣列與陣列指標 指標裡面最難的一種就是指標與陣列了,對於指標和二維陣列來說這裡面的關係比較複雜。牽涉到編譯器的原理和編譯過程。1 指標與一維陣列 指標是指向乙個記憶體的位址,一維陣列的陣列名代表一塊記憶體 這個陣列 的首位址,和陣列首元素的位址一樣,但...
C語言指標 指標與陣列
一 指標的運算 指標可以進行三種運算 1.指標加上整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提是a i j 存在!2.指標減去整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提 a i j 存在!3.兩個指標相加減 兩指標必須指向同一變數!否則運算沒有意義的...