指向一維陣列的指標變數
(1)p+i和a+i就是a[i]的位址
(2)*(p+i)或*(a+i)就是其所指向的元素
(3)指向陣列的指標變數也可以帶下標,如p[i]與*(p+i)等價
#include
main()
;printf
("%d"
,*a)
;//輸出結果為1 ,輸出的是a[0]的值
}
#include
main()
;printf
("%d",*
(a+0))
;//輸出結果為1 ,輸出的是a[0]的值 ,總之a+n,n為數列中第幾個的值
}
#include
main()
;int i;
for(i=
0;i<
4;i++
)printf
("%d",*
(a+i));
//輸出結果為1234
}
自增、自減運算子和指標運算子
#include
main()
,*p;
p=a;
printf
("%d"
,*p)
;//輸出結果為1
printf
("\n");
p=a;
//讓指標變數復位,指向首位址
printf
("%d",*
(p++))
;//輸出結果為1
printf
("\n");
p=a;
printf
("%d",*
(++p));
//輸出結果為2
printf
("\n");
p=a;
printf
("%d",++
*p);
//輸出結果為2
printf
("\n");
p=a;
printf
("%d",(
*p)++);
//輸出結果為2
}
指向多維陣列的指標變數
#include
main()
,},*p;
int i;
for(p=
*a;p<
*a+2*3
;p++
)//*a+[2]*[3]為其元素位址格式
printf
("\n%d"
,*p)
;//輸出結果為123456
}
#include
main()
,},*p;
int i,j;
scanf
("%d"
,&i)
;scanf
("%d"
,&j)
; p=a[0]
;printf
("%d",*
(p+i*
3+j));
//元素位址格式
}
#include
main()
,};int
(*p)[3
];int i,j;
scanf
("%d"
,&i)
;scanf
("%d"
,&j)
; p=a;
printf
("%d",*
(*p+i)
+j);
}
(1)p=a,將二維陣列的首位址賦給了p。p加法的單位為3個單元,因此p+i等價於a+i,*(p+i)
等價於*(a+i),即a[i][0]的首位址。
(2)*(p+i)+j
等價於&a[i][0]+j,即a[i][j]的位址
(3)*(*(p+i)+j)
等價於(*(p+i))[j],即a[i][j]的值
指向指標的指標
如果乙個指標變數存放的又是另乙個指標的位址,則稱這個指標變數為指向指標的指標變數
#include
intmain()
;char
**p;
int i;
for(i=
0;i<
5;i++
)}
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.兩個指標相加減 兩指標必須指向同一變數!否則運算沒有意義的...