• <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++ Primer 學習筆記(七) ---- 第四章 數組和指針(2)

            一、知識點
            1、數組
            2、指針的引入
            3、C風格字符串
            4、多維數組

            二、要點
                  2、指針的引入
                     (1)、指針初始化和賦值操作的約束:
                           不能把int型變量賦給指針,但是可以吧數值0或在編譯時可獲得0值的const量賦給指針:

            int ival;
            int zero = 0;
            const int c_ival = 0;

            int *pi = ival;   // 錯誤:
            pi = zero;        // 錯誤:不能使用int直接賦值,可以用&zero
            pi = c_ival;      // 正確
            pi = 0;            // 正確

                           void*指針:可以保存任何類型對象的指針;但是不允許使用void*指針操作它所指向的對象。

                     (2)、指針和引用
                           引用總是指向某個對象,定義引用時沒有初始化是錯誤的;指針定義時可以不用初始化
                           給引用賦值修改的是該引用所關聯的對象的值;指針就修改了指針的值

            int ival = 1024, ival2 = 2048;
            int *pi = &ival, *pi2 = &ival2;
            pi 
            = pi2;       // 這里就修改pi指向的對象是pi2,而不在是pi了。


            int &ri = ival, &ri2 = ival2;
            ri 
            = ri2;        // 這里修改的就是ival的值了,使ival的值為2048


                     (3)、指針的操作
                           ptrdiff_t:表示2個指針減法操作的結果;
                           ptrdiff_t和size_t的區別:size_t是unsigned類型,ptrdiff_t是signed類型的。
                           C++允許計算數組對象的超出末端的地址,但是不允許對改地址進行解引用。

                     (4)、指針和const
                           【1】、指向const對象的指針:const double *cptr
                        C++強制要求指向const對象的指針也必須具有const特性,即把一個const對象的地址賦給一個普通的、非cosnt對象的指針會導致編譯錯誤;
                        const限定了cptr指針所指的對象是const,而不是cptr本身,即可以給cptr重新賦值,但是不能通過cptr修改其指對象的值;
                        不能使用void*指針保存const對象的地址,必須用const void*;
                        允許把非const對象的地址賦值給指向const對象的指針,但是反過來不行(即第一點說的);但這時還是不能通過指針修改其指對象的值。

            double dval = 3.14;
            const double pi = 3.14;

            double *pi = &pi;               // 錯誤:不能把const對象賦給非const指針
            const double *cptr = &pi;   // 正確
            *cptr = 3.1415;                // 錯誤:不能通過cosnt指針修改所指對象的值

            cptr 
            = &dval;                   // 正確:可以用非const對象給const指針賦值
            *cptr = 3.1415;               // 錯誤:雖然這時指向了非const對象,但還是不能這樣修改對象的值

                           【2】、const指針:double *const cptr
                        這個指針就是說明指針本身是不能修改的,即它不能使const指針再指向其他對象;正因為這樣,所以const指針必須在定義時初始化(和const變量一樣)。
                           【3】、指向const對象的const指針:const double *const pi_ptr
                        這個指針即不能修改它指向對象的值,也不能修改該指針的指向(即它的地址)。

                     (5)、指針和typedef

            typedef string *pstring;
            const pstring cstr;

            // 聲明const pstring時,const修飾的是pstring的類型,而pstring這是一個指針,所以這里cstr是一個const的指針,指向string,等價于下面:
            string *const cstr;


             

            posted on 2012-08-01 22:42 tiger7 閱讀(152) 評論(0)  編輯 收藏 引用 所屬分類: C++ Primer

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            公告

            welcome to tiger's blog.

            常用鏈接

            留言簿

            文章分類

            文章檔案

            搜索

            最新評論

            日本久久中文字幕| 久久久久久亚洲Av无码精品专口| 无码国内精品久久人妻蜜桃| 国产亚洲欧美成人久久片| 久久久久亚洲AV综合波多野结衣| 久久香蕉超碰97国产精品 | 久久91这里精品国产2020| 亚洲精品乱码久久久久久蜜桃不卡 | 26uuu久久五月天| 久久久久久亚洲精品成人 | 91精品国产综合久久久久久| 久久成人国产精品免费软件| 久久国产精品视频| 麻豆av久久av盛宴av| 国产精品亚洲综合久久| 91久久精品91久久性色| 婷婷国产天堂久久综合五月| 四虎影视久久久免费观看| 久久婷婷激情综合色综合俺也去| 久久综合成人网| 国产精品99久久久久久猫咪 | 久久国产综合精品五月天| 久久久久久国产精品无码超碰| 久久国产成人亚洲精品影院| jizzjizz国产精品久久| 成人免费网站久久久| 久久久亚洲裙底偷窥综合| 久久99精品国产99久久6| 久久国产免费观看精品| 欧美熟妇另类久久久久久不卡| 亚洲国产天堂久久久久久| 一级做a爰片久久毛片看看| 久久久精品波多野结衣| 激情综合色综合久久综合| 伊人久久精品线影院| 久久久国产精品福利免费| 久久婷婷五月综合成人D啪| 91精品国产91久久| 国产高清美女一级a毛片久久w| 久久精品国内一区二区三区 | 无码任你躁久久久久久久|