<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 9.C語言字符串指針 在C語言中,可以用兩種方法訪問一個字符串。 ## 用字符數組存放一個字符串,然后輸出該字符串。 【例10-24】 ~~~ main(){ char string[]=”I love China!”; printf("%s\n",string); } ~~~ 說明:和前面介紹的數組屬性一樣,string是數組名,它代表字符數組的首地址。 ![](http://www.lvtao.net/content/uploadfile/201404/35f161eef796b06923be46db473a131e20140421044348.gif) ## 用字符串指針指向一個字符串。 【例10-25】 ~~~ main(){ char *string=”I love China!”; printf("%s\n",string); } ~~~ 字符串指針變量的定義說明與指向字符變量的指針變量說明是相同的。只能按對指針變量的賦值不同來區別。對指向字符變量的指針變量應賦予該字符變量的地址。如: ? ? char c,*p=&c; 表示p是一個指向字符變量c的指針變量。而: ? ? char *s="C Language"; 則表示s是一個指向字符串的指針變量。把字符串的首地址賦予s。 上例中,首先定義string是一個字符指針變量,然后把字符串的首地址賦予string(應寫出整個字符串,以便編譯系統把該串裝入連續的一塊內存單元),并把首地址送入string。程序中的: ? ? char *ps="C Language"; 等效于: ? ? char *ps; ? ? ps="C Language"; 【例10-26】輸出字符串中n個字符后的所有字符。 ~~~ main(){ char *ps="this is a book"; int n=10; ps=ps+n; printf("%s\n",ps); } ~~~ 運行結果為: ? ? book 在程序中對ps初始化時,即把字符串首地址賦予ps,當ps= ps+10之后,ps指向字符“b”,因此輸出為"book"。 【例10-27】在輸入的字符串中查找有無‘k’字符。 ~~~ main(){ char st[20],*ps; int i; printf("input a string:\n"); ps=st; scanf("%s",ps); for(i=0;ps[i]!='\0';i++) if(ps[i]=='k'){ printf("there is a 'k' in the string\n"); break; } if(ps[i]=='\0') printf("There is no 'k' in the string\n"); } ~~~ 【例10-28】本例是將指針變量指向一個格式字符串,用在printf函數中,用于輸出二維數組的各種地址表示的值。但在printf語句中用指針變量PF代替了格式串。 這也是程序中常用的方法。 ~~~ main(){ static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11}; char *PF; PF="%d,%d,%d,%d,%d\n"; printf(PF,a,*a,a[0],&a[0],&a[0][0]); printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]); printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]); printf("%d,%d\n",a[1]+1,*(a+1)+1); printf("%d,%d\n",*(a[1]+1),*(*(a+1)+1)); } ~~~ 【例10.29】本例是把字符串指針作為函數參數的使用。要求把一個字符串的內容復制到另一個字符串中,并且不能使用strcpy函數。函數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',若是則表明源字符串結束,不再循環。否則,pds和pss都加1,指向下一字符。在主函數中,以指針變量pa,pb為實參,分別取得確定值后調用cprstr函數。由于采用的指針變量pa和pss,pb和pds均指向同一字符串,因此在主函數和cprstr函數中均可使用這些字符串。也可以把cprstr函數簡化為以下形式: ? ? cprstr(char *pss,char*pds) ? ? {while ((*pds++=*pss++)!=`\0');} 即把指針的移動和賦值合并在一個語句中。 進一步分析還可發現`\0'的ASCⅡ碼為0,對于while語句只看表達式的值為非0就循環,為0則結束循環,因此也可省去“!=`\0'”這一判斷部分,而寫為以下形式: ? ? cprstr (char *pss,char *pds) ? ? {while (*pdss++=*pss++);} 表達式的意義可解釋為,源字符向目標字符賦值,移動指針,若所賦值為非0則循環,否則結束循環。這樣使程序更加簡潔。 【例10-30】簡化后的程序如下所示。 ~~~ 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); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看