二級C語言考試輔導教程第六章:指針[3]

字號:

數(shù)組指針變量的說明和使用
     指向數(shù)組的指針變量稱為數(shù)組指針變量。 在討論數(shù)組指針變量的說明和使用之前,我們先明確幾個關系。
     一個數(shù)組是由連續(xù)的一塊內(nèi)存單元組成的。 數(shù)組名就是這塊連續(xù)內(nèi)存單元的首地址。一個數(shù)組也是由各個數(shù)組元素(下標變量) 組成的。每個數(shù)組元素按其類型不同占有幾個連續(xù)的內(nèi)存單元。 一個數(shù)組元素的首地址也是指它所占有的幾個內(nèi)存單元的首地址。 一個指針變量既可以指向一個數(shù)組,也可以指向一個數(shù)組元素, 可把數(shù)組名或第一個元素的地址賦予它。如要使指針變量指向第i號元素可以把i元素的首地址賦予它或把數(shù)組名加i賦予它。
     設有實數(shù)組a,指向a的指針變量為pa,從圖6.3中我們可以看出有以下關系:
     pa,a,&a[0]均指向同一單元,它們是數(shù)組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");
     }
     主函數(shù)
     定義一個整型數(shù)組和一個整型變量
     循環(huán)語句
     給數(shù)組賦值
     打印每一個數(shù)組的值
     ......
     輸出換行
     ......
     數(shù)組指針變量說明的一般形式為:
     類型說明符 * 指針變量名
     其中類型說明符表示所指數(shù)組的類型。 從一般形式可以看出指向數(shù)組的指針變量和指向普通變量的指針變量的說明是相同的。來源:www.examda.com
     引入指針變量后,就可以用兩種方法來訪問數(shù)組元素了。
     第一種方法為下標法,即用a[i]形式訪問數(shù)組元素。 在第四章中介紹數(shù)組時都是采用這種方法。
     第二種方法為指針法,即采用*(pa+i)形式,用間接訪問的方法來訪問數(shù)組元素。
     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++;
     }
     }
     主函數(shù)
     定義整型數(shù)組和指針
     將指針pa指向數(shù)組a
     循環(huán)
     將變量i的值賦給由指針pa指向的a[]的數(shù)組單元
     將指針pa指向a[]的下一個單元
     ......
     指針pa重新取得數(shù)組a的首地址
     循環(huán)
     用數(shù)組方式輸出數(shù)組a中的所有元素
     將指針pa指向a[]的下一個單元
     ......
     ......
     下面,另舉一例,該例與上例本意相同,但是實現(xiàn)方式不同。
     main(){
     int a[5],i,*pa=a;
     for(i=0;i<5;){
     *pa=i;
     printf("a[%d]=%d\n",i++,*pa++);
     }
     }
     主函數(shù)
     定義整型數(shù)組和指針,并使指針指向數(shù)組a
     循環(huán)
     將變量i的值賦給由指針pa指向的a[]的數(shù)組單元
     用指針輸出數(shù)組a中的所有元素,同時指針pa指向a[]的下一個單元
     ......
     ......
     數(shù)組名和數(shù)組指針變量作函數(shù)參數(shù)
     在第五章中曾經(jīng)介紹過用數(shù)組名作函數(shù)的實參和形參的問題。在學習指針變量之后就更容易理解這個問題了。 數(shù)組名就是數(shù)組的首地址,實參向形參傳送數(shù)組名實際上就是傳送數(shù)組的地址, 形參得到該地址后也指向同一數(shù)組。 這就好象同一件物品有兩個彼此不同的名稱一樣。同樣,指針變量的值也是地址, 數(shù)組指針變量的值即為數(shù)組的首地址,當然也可作為函數(shù)的參數(shù)使用。