黑馬程式員--C語言中的指標(2)

來源:互聯網
上載者:User

標籤:

------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------

數組指標變數的說明和使用

  指向數組的指標變數稱為數組指標變數。 在討論數組指標變數的說明和使用之前,我們先明確幾個關係。 一個數組是由連續的一塊記憶體單元組成的。 數組名就是這塊連續記憶體單元的首地址。一個數組也是由各個數組元素(下標變數) 組成的。每個數組元素按其類型不同佔有幾個連續的記憶體單元。 一個數組元素的首地址也是指它所佔有的幾個記憶體單元的首地址。 一個指標變數既可以指向一個數組,也可以指向一個數組元素, 可把數組名或第一個元素的地址賦予它。如要使指標變數指向第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[]的下一個單元

數組名和數組指標變數作函數參數

在第五章中曾經介紹過用數組名作函數的實參和形參的問題。在學習指標變數之後就更容易理解這個問題了。 數組名就是數組的首地址,實參向形參傳送數組名實際上就是傳送數組的地址, 形參得到該地址後也指向同一數組。 這就好象同一件物品有兩個彼此不同的名稱一樣。同樣,指標變數的值也是地址, 數組指標變數的值即為數組的首地址,當然也可作為函數的參數使用。

float aver(float *pa);

main(){

float sco[5],av,*sp;

int i;

sp=sco;

printf("/ninput 5 scores:/n");

for(i=0;i<5;i++)

 scanf("%f",&sco[i]);

av=aver(sp);

printf("average score is %5.2f",av);

}

float aver(float *pa) {

int i;

float av,s=0;

for(i=0;i<5;i++)

 s=s+*pa++;

av=s/5;

return av; }

黑馬程式員--C語言中的指標(2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.