• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            朗朗空間

            我知道并不是 所有鳥(niǎo)兒都飛翔

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              16 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(1)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            2.字符數(shù)組和指針
            我們可以使用指針?lè)?hào)建立字符串。
            如:

            const char *about[] = "about me!";

            這個(gè)聲明和下面聲明的作用幾乎相同:

            char about[] = "about me!"

            那么,這兩種方式有什么不同呢?
            數(shù)組形式在計(jì)算機(jī)中被分配一個(gè)有10個(gè)元素的數(shù)組。每個(gè)元素都被初始化為相應(yīng)的字符。最后那個(gè)字符為\0。
            通常,被引用的字符串存儲(chǔ)在可執(zhí)行文件的數(shù)據(jù)段部分;
            當(dāng)程序被加載到內(nèi)存中時(shí),字符串也被加載到內(nèi)存中。被引用的字符串被稱為位于靜態(tài)存儲(chǔ)區(qū)。
            但是在程序開(kāi)始運(yùn)行后才為數(shù)組分配存儲(chǔ)空間。這個(gè)時(shí)候,把被引用的字符串復(fù)制到數(shù)組中。
            此后,編譯器會(huì)把數(shù)組名about看作是數(shù)組首元素地址&about[0]的同義詞。
            但是,數(shù)組形式的about是個(gè)地址常量,您不能更改about,因?yàn)橹馕吨臄?shù)組存儲(chǔ)的位置(地址)。
            可以用運(yùn)算符aoubt+1來(lái)標(biāo)識(shí)下一個(gè)元素,但是不能使用++about。
            增量運(yùn)算符只能用在變量名前,不能用在常量名前。

            指針形式*about也在靜態(tài)區(qū)預(yù)留10個(gè)元素的空間。
            此外,一旦程序開(kāi)始執(zhí)行,還需要為指針變量另外預(yù)留一個(gè)存儲(chǔ)位置。
            這個(gè)變量初始化時(shí)指向字符串的第一個(gè)字符,但是它的值是可以改變的。
            因此,可以對(duì)它使用增量運(yùn)算符。例如,++about將指向第二個(gè)字符b。

            3.數(shù)組和指針的差別

            char heart[] = "I love cuicui!";
            char *head[] = "I love cuicui!"

            主要的差別在于數(shù)組名heart是個(gè)常量,而指針head則是個(gè)變量。
            首先,兩者都可以使用數(shù)組符號(hào)

            for (i = 0; i < 6; i++)
            {
                
            putchar (heart[i]);
            }
            putchar ('\n');
            for (i = 0; i < 6; i++)
            {
                
            putchar (head[i]);
            }
            putchar ('\n');

            其次,兩者都可以使用指針加法

            for (i = 0; i < 6; i++)
            {
                
            putchar (*(heart + i));
            }
            putchar ('\n');
            for (i = 0; i < 6; i++)
            {
                
            putchar (*(hed + i));
            }
            putchar ('\n');

            但是,只有指針可以使用增量運(yùn)算符

            while (*(head) != '\0')
            {
                
            putchar (*(head++));
            }

            最后,不能使用以下語(yǔ)句

            //第一種情況
            heart = head//非法,常量的值不能改變
            //第二種情況
            head[1] = 'k';  //非法,C的標(biāo)準(zhǔn)不應(yīng)該允許這樣做,但少量編譯器混淆了這個(gè)概念

            為了防止第二種情況發(fā)生,建議的做法是在初始化一個(gè)指向字符串文字的指針時(shí)使用const修飾符:

            const char * p1 = "Klingon";
            posted on 2008-05-04 16:21 聶元朗 閱讀(318) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C語(yǔ)言學(xué)習(xí)筆記
            理论片午午伦夜理片久久| 久久久久久久综合日本| 久久99国产综合精品| 国产999精品久久久久久| 一97日本道伊人久久综合影院 | 日韩亚洲国产综合久久久| 无码精品久久久天天影视| 99久久www免费人成精品| 久久精品人妻中文系列| 亚洲欧美日韩精品久久| 久久中文字幕人妻丝袜| 精品久久久无码中文字幕| 欧美熟妇另类久久久久久不卡| 国产精品欧美久久久久无广告| 久久婷婷五月综合国产尤物app| 久久综合九色欧美综合狠狠| 97精品国产91久久久久久| 久久婷婷是五月综合色狠狠| 免费国产99久久久香蕉| 久久99亚洲网美利坚合众国| 综合人妻久久一区二区精品| 无码乱码观看精品久久| 久久精品国产一区二区| 青青青国产成人久久111网站| 午夜欧美精品久久久久久久| 久久乐国产综合亚洲精品| 久久亚洲高清综合| 成人a毛片久久免费播放| 久久久久久久综合日本亚洲| 久久精品国产亚洲av影院| 亚洲欧美日韩久久精品第一区| 久久国产亚洲精品| 久久久久久曰本AV免费免费| 精品久久久久久无码不卡| 亚洲第一永久AV网站久久精品男人的天堂AV| 久久精品国产影库免费看| aaa级精品久久久国产片| 99久久无色码中文字幕| 青青草原综合久久| 国产精品成人99久久久久91gav| 亚洲国产精品久久久久网站 |