• <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>

            朗朗空間

            我知道并不是 所有鳥兒都飛翔

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

            常用鏈接

            留言簿(1)

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

            搜索

            •  

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            2.字符數(shù)組和指針
            我們可以使用指針符號(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ū)。
            但是在程序開始運(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來標(biāo)識(shí)下一個(gè)元素,但是不能使用++about。
            增量運(yùn)算符只能用在變量名前,不能用在常量名前。

            指針形式*about也在靜態(tài)區(qū)預(yù)留10個(gè)元素的空間。
            此外,一旦程序開始執(zhí)行,還需要為指針變量另外預(yù)留一個(gè)存儲(chǔ)位置。
            這個(gè)變量初始化時(shí)指向字符串的第一個(gè)字符,但是它的值是可以改變的。
            因此,可以對它使用增量運(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++));
            }

            最后,不能使用以下語句

            //第一種情況
            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 聶元朗 閱讀(315) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C語言學(xué)習(xí)筆記
            一本久久a久久精品亚洲| 青青青国产精品国产精品久久久久 | 久久久久久久97| 日韩精品久久无码人妻中文字幕| 7777久久久国产精品消防器材| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 中文字幕亚洲综合久久2| 久久综合伊人77777| 热re99久久精品国99热| 久久久久免费视频| 97久久精品午夜一区二区| 性做久久久久久久久| 国产精品免费福利久久| 婷婷久久五月天| 青青草原1769久久免费播放| 一本色道久久HEZYO无码| 久久se精品一区二区影院| 久久99精品久久久久久动态图| 久久一本综合| 精品久久久久久99人妻| 丁香五月网久久综合| 97精品伊人久久久大香线蕉| 久久久免费观成人影院| 99久久99久久| 久久久久亚洲精品天堂| 久久精品日日躁夜夜躁欧美| 久久久WWW免费人成精品| 青青青伊人色综合久久| 999久久久免费精品国产| 香蕉久久夜色精品升级完成| 亚洲乱码日产精品a级毛片久久 | 嫩草影院久久国产精品| 99久久99久久精品免费看蜜桃| 久久人人爽人人爽人人片AV不| 久久久久亚洲AV成人网人人网站| 久久91精品久久91综合| 久久精品草草草| 韩国三级中文字幕hd久久精品| 久久天堂电影网| 久久精品国产清自在天天线| segui久久国产精品|