陣列和指標的關係
函式引數表中的陣列實際上是指標
sizeof(a) == sizeof(int*)
可以用陣列的運算子進行運算
#include
void
minmax
(int a,
int len,
int*min,
int*max)
;//定義最大值和最小值函式
intmain()
;int min, max;
printf
("main sizeof(a)=%lu\n"
,sizeof
(a))
;//以無符號長整型輸出主函式中的陣列a的大小
printf
("main a=%p\n"
, a)
;minmax
(a,sizeof
(a)/
sizeof
(a[0])
,&min,
&max)
;printf
("a[0]=%d\n"
, a[0]
);printf
("min=%d, max=%d\n"
, min, max)
;return0;
}void
minmax
(int a,
int len,
int*min,
int*max)
//可等價寫為void minmax(int *a, ……)
if(a[i]
>
*max)
}}
四種函式原型等價
int sum(int *ar, int n);
int sum(int *, int);
int sum(int ar, int n);
int sum(int , int);
不是型別等價,在參數列**現,作為函式原型是等價的
陣列變數本身表達位址,所以
int a[10]; int *p=a;
陣列的單元表達的是變數,需要用&取位址
a == &a[0]
運算子可以對陣列做,也可以對指標做
p[0] <==> a[0]
繼上方**
int
*p=&min;
printf
("*p=%d\n"
,*p)
;printf
("p[0]=%d\n"
, p[0]
);
輸出數值相等
號可以對指標做,也可以對陣列做
如a = 25
上方a,寫成*a輸出1000,可以讀也可以寫
實際上,陣列是 const的指標
int b --> int * const b
b是乙個常數,不能被改變,是乙個常量指標
指標與陣列學習筆記
1.指標與位址 取址符,只能應用於記憶體中的物件,即變數和陣列元素 間接定址和間接引用運算子,看下面的 intx 1,y 2,z 10 int ip ip是int型別的指標 ip x 指標ip現在指向x,ip儲存x的位址 y ip y的值現在為1 ip 0 x現在的值是0 ip z 0 指標ip現在...
C語言筆記 指標 指標與陣列
和 可以將指標向前或向後移動 n 個位元組,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...