• <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++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              16 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(1)

            我參與的團隊

            搜索

            •  

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            2.字符數組和指針
            我們可以使用指針符號建立字符串。
            如:

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

            這個聲明和下面聲明的作用幾乎相同:

            char about[] = "about me!"

            那么,這兩種方式有什么不同呢?
            數組形式在計算機中被分配一個有10個元素的數組。每個元素都被初始化為相應的字符。最后那個字符為\0。
            通常,被引用的字符串存儲在可執行文件的數據段部分;
            當程序被加載到內存中時,字符串也被加載到內存中。被引用的字符串被稱為位于靜態存儲區。
            但是在程序開始運行后才為數組分配存儲空間。這個時候,把被引用的字符串復制到數組中。
            此后,編譯器會把數組名about看作是數組首元素地址&about[0]的同義詞。
            但是,數組形式的about是個地址常量,您不能更改about,因為著意味著更改數組存儲的位置(地址)。
            可以用運算符aoubt+1來標識下一個元素,但是不能使用++about。
            增量運算符只能用在變量名前,不能用在常量名前。

            指針形式*about也在靜態區預留10個元素的空間。
            此外,一旦程序開始執行,還需要為指針變量另外預留一個存儲位置。
            這個變量初始化時指向字符串的第一個字符,但是它的值是可以改變的。
            因此,可以對它使用增量運算符。例如,++about將指向第二個字符b。

            3.數組和指針的差別

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

            主要的差別在于數組名heart是個常量,而指針head則是個變量。
            首先,兩者都可以使用數組符號

            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');

            但是,只有指針可以使用增量運算符

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

            最后,不能使用以下語句

            //第一種情況
            heart = head//非法,常量的值不能改變
            //第二種情況
            head[1] = 'k';  //非法,C的標準不應該允許這樣做,但少量編譯器混淆了這個概念

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

            const char * p1 = "Klingon";
            posted on 2008-05-04 16:21 聶元朗 閱讀(315) 評論(0)  編輯 收藏 引用 所屬分類: C語言學習筆記
            伊人色综合九久久天天蜜桃| 亚洲伊人久久大香线蕉苏妲己| 欧美日韩中文字幕久久久不卡| 日批日出水久久亚洲精品tv| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产精品乱码久久久久久软件| 亚洲?V乱码久久精品蜜桃| 亚洲国产美女精品久久久久∴ | 久久精品人成免费| 91精品国产91久久久久久青草| 天天综合久久一二三区| 99精品国产在热久久| 久久无码人妻精品一区二区三区 | 欧美粉嫩小泬久久久久久久| 亚洲va中文字幕无码久久不卡| 狠狠色丁香婷婷综合久久来来去| 亚洲va中文字幕无码久久不卡| 欧美午夜A∨大片久久| 国产精品久久国产精品99盘| 精品无码久久久久国产动漫3d| 国产69精品久久久久9999| 97久久超碰国产精品旧版| 97久久国产露脸精品国产| 中文字幕久久精品 | 亚洲AV日韩AV天堂久久| 亚洲国产精品狼友中文久久久| 94久久国产乱子伦精品免费| 久久精品天天中文字幕人妻| 无码国产69精品久久久久网站| 久久久久99这里有精品10| 色99久久久久高潮综合影院| 精品人妻伦一二三区久久| 青青青青久久精品国产h| 久久r热这里有精品视频| AV无码久久久久不卡网站下载| 久久久婷婷五月亚洲97号色| 亚洲AV无一区二区三区久久| 日韩精品久久久肉伦网站| 伊人久久大香线蕉av不变影院| 日产精品久久久久久久性色| 久久久久久久精品妇女99 |