• <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í)筆記
            国内精品欧美久久精品| 久久精品国产亚洲AV忘忧草18| 婷婷久久香蕉五月综合加勒比| 99久久夜色精品国产网站| 久久99久久99精品免视看动漫 | 久久久久久av无码免费看大片| 青草影院天堂男人久久| 久久精品国产亚洲精品| 国产欧美久久久精品影院| 久久久无码一区二区三区| 国产精品成人99久久久久| 久久婷婷人人澡人人爽人人爱| 久久精品国产亚洲AV大全| 国产精品久久久99| 国产成人精品综合久久久| 色综合久久中文色婷婷| 久久精品国产99国产精品导航| 久久久精品午夜免费不卡| 久久久久av无码免费网| 日本久久久久久中文字幕| 亚洲精品乱码久久久久久久久久久久 | 亚洲国产精品高清久久久| 国产精品久久久99| 国产亚洲精品美女久久久| 亚洲伊人久久综合中文成人网| 精品国产福利久久久| 久久久久免费精品国产| 久久久精品视频免费观看| 久久国产精品99国产精| 欧美一区二区久久精品| 99久久夜色精品国产网站| 精品蜜臀久久久久99网站| 久久天天躁狠狠躁夜夜avapp| 狠狠色综合网站久久久久久久| 国产麻豆精品久久一二三| 亚洲香蕉网久久综合影视| 国产精品久久久久久久app| 欧美精品一区二区久久| 欧美午夜A∨大片久久| 午夜精品久久久久久影视777| 精品久久久久中文字幕一区|