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

C語言初學者入門知識之多維數(shù)組的指針變量

  在下例是講解,把字符串指針作為函數(shù)參數(shù)的使用。要求把一個字符串的內(nèi)容復制到另一個字符串中,并且不能使用strcpy函數(shù)。函數(shù)cprstr的形參為兩個字符指針變量。pss指向源字符串,pds指向目標字符串。表達式:

  (*pds=*pss)!=`\0'

  cpystr(char *pss,char *pds){

  while((*pds=*pss)!='\0'){

  pds++;

  pss++; }

  }

  main(){

  char *pa="CHINA",b[10],*pb;

  pb=b;

  cpystr(pa,pb);

  printf("string a=%s\nstring b=%s\n",pa,pb);

  }

  在上例中,程序完成了兩項工作:一是把pss指向的源字符復制到pds所指向的目標字符中,二是判斷所復制的字符是否為`\0',若是則表明源字符串結(jié)束,不再循環(huán)。否則,pds和pss都加1,指向下一字符。在主函數(shù)中,以指針變量pa,pb為實參,分別取得確定值后調(diào)用cprstr函數(shù)。由于采用的指針變量pa和pss,pb和pds均指向同一字符串,因此在主函數(shù)和cprstr函數(shù)中均可使用這些字符串。也可以把cprstr函數(shù)簡化為以下形式:

  cprstr(char *pss,char*pds)

  {while ((*pds++=*pss++)!=`\0');}

  即把指針的移動和賦值合并在一個語句中。 進一步分析還可發(fā)現(xiàn)`\0'的ASCⅡ碼為0,對于while語句只看表達式的值為非0就循環(huán),為0則結(jié)束循環(huán),因此也可省去"!=`\0'"這一判斷部分,而寫為以下形式:

  cprstr (char *pss,char *pds)

  {while (*pdss++=*pss++);}

  表達式的意義可解釋為,源字符向目標字符賦值, 移動指針,若所賦值為非0則循環(huán),否則結(jié)束循環(huán)。這樣使程序更加簡潔。簡化后的程序如下所示。

  cpystr(char *pss,char *pds){

  while(*pds++=*pss++);

  }

  main(){

  char *pa="CHINA",b[10],*pb;

  pb=b;

  cpystr(pa,pb);

  printf("string a=%s\nstring b=%s\n",pa,pb);

  }

  使用字符串指針變量與字符數(shù)組的區(qū)別

  用字符數(shù)組和字符指針變量都可實現(xiàn)字符串的存儲和運算。 但是兩者是有區(qū)別的。在使用時應注意以下幾個問題:

  1. 字符串指針變量本身是一個變量,用于存放字符串的首地址。而字符串本身是存放在以該首地址為首的一塊連續(xù)的內(nèi)存空間中并以'\0'作為串的結(jié)束。字符數(shù)組是由于若干個數(shù)組元素組成的,它可用來存放整個字符串。

  2. 對字符數(shù)組作初始化賦值,必須采用外部類型或靜態(tài)類型,如: static char st[]={"C Language"};而對字符串指針變量則無此限制,如: char *ps="C Language";

  3. 對字符串指針方式 char *ps="C Language";可以寫為: char *ps; ps="C Language";而對數(shù)組方式:

  static char st[]={"C Language"};

  不能寫為:

  char st[20];st={"C Language"};

  而只能對字符數(shù)組的各元素逐個賦值。

  從以上幾點可以看出字符串指針變量與字符數(shù)組在使用時的區(qū)別,同時也可看出使用指針變量更加方便。前面說過,當一個指針變量在未取得確定地址前使用是危險的,容易引起錯誤。但是對指針變量直接賦值是可以的。因為C系統(tǒng)對指針變量賦值時要給以確定的地址。因此,

  char *ps="C Langage";

  或者

  char *ps;

  ps="C Language";

  都是合法的。

上一頁  1 2 3 4  下一頁

  相關(guān)推薦:

  2012年軟考系統(tǒng)分析師考試60天完美復習計劃

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

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

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