導語:指標變數可以進行某些運算,那麼在運算中如何操作呢?讓我們瞭解一下C語言陣列指標變數的說明和使用吧!
陣列指標變數的說明和使用
指向陣列的指標變數稱為陣列指標變數。 在討論陣列指標變數的說明和使用之前,我們先明確幾個關係。
一個數組是由連續的一塊記憶體單元組成的。 陣列名就是這塊連續記憶體單元的首地址。一個數組也是由各個陣列元素(下標變數) 組成的。每個陣列元素按其型別不同佔有幾個連續的記憶體單元。 一個數組元素的首地址也是指它所佔有的幾個記憶體單元的首地址。 一個指標變數既可以指向一個數組,也可以指向一個數組元素, 可把陣列名或第一個元素的'地址賦予它。如要使指標變數指向第i號元素可以把i元素的首地址賦予它或把陣列名加i賦予它。
設有實陣列a,指向a的指標變數為pa,從圖6.3中我們可以看出有以下關係:
pa,a,&a[0]均指向同一單元,它們是陣列a的首地址,也是0 號元素a[0]的首地址。pa+1,a+1,&a[1]均指向1號元素a[1]。類推可知a+i,a+i,&a[i]
指向i號元素a[i]。應該說明的是pa是變數,而a,&a[i]都是常量。在程式設計時應予以注意。
main(){
int a[5],i;
for(i=0;i<5;i++){
a[i]=i;
printf("a[%d]=%d/n",i,a[i]);
}
printf("/n");
}
主函式
定義一個整型陣列和一個整型變數
迴圈語句
給陣列賦值
列印每一個數組的值
......
輸出換行
......
陣列指標變數說明的一般形式為:
型別說明符 * 指標變數名
其中型別說明符表示所指陣列的型別。 從一般形式可以看出指向陣列的指標變數和指向普通變數的指標變數的說明是相同的。
引入指標變數後,就可以用兩種方法來訪問陣列元素了。
第一種方法為下標法,即用a[i]形式訪問陣列元素。 在第四章中介紹陣列時都是採用這種方法。
第二種方法為指標法,即採用*(pa+i)形式,用間接訪問的方法來訪問陣列元素。
main(){
int a[5],i,*pa;
pa=a;
for(i=0;i<5;i++){
*pa=i;
pa++;
}
pa=a;
for(i=0;i<5;i++){
printf("a[%d]=%d/n",i,*pa);
pa++;
}
}
主函式
定義整型陣列和指標
將指標pa指向陣列a
迴圈
將變數i的值賦給由指標pa指向的a[]的陣列單元
將指標pa指向a[]的下一個單元
......
指標pa重新取得陣列a的首地址
迴圈
用陣列方式輸出陣列a中的所有元素
將指標pa指向a[]的下一個單元
......
......
下面,另舉一例,該例與上例本意相同,但是實現方式不同。
main(){
int a[5],i,*pa=a;
for(i=0;i<5;){
*pa=i;
printf("a[%d]=%d/n",i++,*pa++);
}
}
主函式
定義整型陣列和指標,並使指標指向陣列a
迴圈
將變數i的值賦給由指標pa指向的a[]的陣列單元
用指標輸出陣列a中的所有元素,同時指標pa指向a[]的下一個單元
......