首頁考試吧論壇Exam8視線考試商城網絡課程模擬考試考友錄實用文檔求職招聘論文下載
2013中考
法律碩士
2013高考
MBA考試
2013考研
MPA考試
在職研
中科院
考研培訓 自學考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托�?荚�
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務 員
導游考試
物 流 師
出版資格
單 證 員
報 關 員
外 銷 員
價格鑒證
網絡編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務
期貨考試
國際商務
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
會計從業(yè)資格
基金從業(yè)資格
統計從業(yè)資格
經濟師
精算師
統計師
會計職稱
法律顧問
ACCA考試
注冊會計師
資產評估師
審計師考試
高級會計師
注冊稅務師
國際內審師
理財規(guī)劃師
美國注冊會計師
一級建造師
安全工程師
設備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質量工程師
巖土工程師
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
咨詢工程師
結構工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產估價
土地估價師
安全評價師
房地產經紀人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
繽紛校園 實用文檔 英語學習 作文大全 求職招聘 論文下載 訪談|游戲
軟件水平考試
軟件水平考試資訊
軟件水平考試試題
軟件水平考試專項輔導
軟件水平考試交流互動
軟件水平考試交流互動
您現在的位置: 考試吧 > 軟件水平考試 > 復習資料 > 程序員資料 > 正文

C語言初學者入門知識之指針的慨念02

  數組指針變量的說明和使用

  指向數組的指針變量稱為數組指針變量。 在討論數組指針變量的說明和使用之前,我們先明確幾個關系。

  一個數組是由連續(xù)的一塊內存單元組成的。 數組名就是這塊連續(xù)內存單元的首地址。一個數組也是由各個數組元素(下標變量) 組成的。每個數組元素按其類型不同占有幾個連續(xù)的內存單元。 一個數組元素的首地址也是指它所占有的幾個內存單元的首地址。 一個指針變量既可以指向一個數組,也可以指向一個數組元素, 可把數組名或第一個元素的地址賦予它。如要使指針變量指向第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");

  }

  主函數

  定義一個整型數組和一個整型變量

  循環(huá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

  循環(huán)

  將變量i的值賦給由指針pa指向的a[]的數組單元

  將指針pa指向a[]的下一個單元

  ……

  指針pa重新取得數組a的首地址

  循環(huán)

  用數組方式輸出數組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

  循環(huán)

  將變量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;

  }

  相關推薦:

  2012年軟考系統分析師考試60天完美復習計劃

  2012年軟件水平考試網絡工程師章節(jié)筆記講義匯總

  2012年上半年軟件水平考試成績查詢匯總

文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。