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

            搜索

            •  

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

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

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

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

            char about[] = "about me!"

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

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

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

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

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

            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的標(biāo)準(zhǔn)不應(yīng)該允許這樣做,但少量編譯器混淆了這個概念

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

            const char * p1 = "Klingon";
            posted on 2008-05-04 16:21 聶元朗 閱讀(317) 評論(0)  編輯 收藏 引用 所屬分類: C語言學(xué)習(xí)筆記
            99久久婷婷免费国产综合精品| 久久久久久久久久免免费精品| 久久久久亚洲av成人网人人软件| 久久久久久免费视频| 久久久无码精品亚洲日韩京东传媒 | 久久久久香蕉视频| 99久久国产宗和精品1上映| 99久久人妻无码精品系列| 久久人人爽人人澡人人高潮AV| 精品无码久久久久国产动漫3d| 久久成人精品视频| 欧美精品国产综合久久| 久久久久久久99精品免费观看| 国产香蕉久久精品综合网| 久久精品一区二区国产| 亚洲国产成人久久笫一页| 99久久精品毛片免费播放| 99久久免费国产精品特黄| 亚洲国产成人久久综合碰碰动漫3d| 久久久久国产成人精品亚洲午夜| 久久久久高潮毛片免费全部播放 | 久久午夜免费视频| 中文字幕亚洲综合久久2| 人妻精品久久久久中文字幕69 | 久久亚洲中文字幕精品一区| 久久精品中文无码资源站| 久久久精品久久久久影院| 亚洲狠狠综合久久| 国产韩国精品一区二区三区久久| 久久人人爽人人人人片av| 久久久久久久免费视频| 久久精品一区二区影院| 久久精品国产99久久香蕉| 91精品国产91久久久久久| 精品一区二区久久久久久久网站| 影音先锋女人AV鲁色资源网久久 | 伊人久久大香线蕉亚洲五月天 | 亚洲av日韩精品久久久久久a | 久久笫一福利免费导航 | 看全色黄大色大片免费久久久 | 精品无码久久久久久久动漫|