• <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>
            Impossible is nothing  
              愛過知情重醉過知酒濃   花開花謝終是空   緣份不停留像春風(fēng)來又走   女人如花花似夢
            公告
            日歷
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345
            統(tǒng)計
            • 隨筆 - 8
            • 文章 - 91
            • 評論 - 16
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿(4)

            隨筆分類(4)

            隨筆檔案(8)

            文章分類(77)

            文章檔案(91)

            相冊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

            1、存儲類

            4個存儲類說明符:auto、register、extern、static。標(biāo)識符的存儲類說明符可以確定其存儲類、范圍和連接。

            分兩類:

            自動存儲類——auto和register。

            只有變量能作為自動存儲類,函數(shù)的局部變量和參數(shù)通常都是自動存儲類。局部變量默認(rèn)為自動存儲類。

            靜態(tài)存儲類——extern和static。

            這兩個關(guān)鍵字用來聲明靜態(tài)存儲類變量和函數(shù)的標(biāo)識符。這種變量從程序開始執(zhí)行時就存在。對于變量,程序開始執(zhí)行時就分配和初始化存儲空間;對于函數(shù),從程序開始執(zhí)行時就存在函數(shù)名。

            全局變量和函數(shù)名默認(rèn)為extern。用static聲明的局部變量仍然只在定義該變量的函數(shù)中使用,但與自動存儲類變量不同的是,static局 部變量在函數(shù)退出時保持其數(shù)值。下次調(diào)用這個函數(shù)時,static局部變量包含上次函數(shù)退出時的值。注:所有靜態(tài)存儲類的數(shù)字變量都默認(rèn)初始化為0。

            全局變量能夠被同一個文件中該變量聲明后的所有函數(shù)訪問。其他文件中的函數(shù)也可以訪問全局變量,但必須在使用前予以聲明,如在一個文件中定義:

            int flag;

            則在另一個文件中需定義如下:

            extern int flag;

            才可使用全局變量flag。

            說明:存儲類別說明符extern告訴編譯器:變量flag或者稍后定義在同一個文件中,或者在另一個文件中定義。而編譯器不知道flag定義在何 處,因此讓連接程序查找flag,如果沒有找到flag的定義,則發(fā)出錯誤消息,如找到,則指明其位置,從而解決對該變量的引用。對于函數(shù)的引用也是如 此。可以用static關(guān)鍵字來防止定義在其他文件中的函數(shù)(沒有在同一個文件中定義)使用這些全局變量或函數(shù)。

            2、enum的聲明

            enum Status(CONTINUE,WON,LOST);

            Status gameStatus;

            默認(rèn)枚舉常量(CONTINUE,WON,LOST)從0開始,增量為1。

            enum Months(JAN=1,F(xiàn)EB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC);

            也可指定從某個常數(shù)開始,如上例從1開始,增量為1。

            3、默認(rèn)參數(shù)

            必須是函數(shù)參數(shù)表中最右邊的參數(shù)。

            int fun1(int,int=1,int=2); //正確

            int fun2(int=1,int); //錯誤

            默認(rèn)參數(shù)應(yīng)在函數(shù)名第一次出現(xiàn)是指定,通常在函數(shù)原型中。

            4、一元作用域運(yùn)算符 :: 可以在同名局部變量的作用域中訪問全局變量。

            5、函數(shù)重載

            通過函數(shù)簽名(函數(shù)名和參數(shù)類型的組合,包括參數(shù)個數(shù),類型,順序)來區(qū)別。編譯器用參數(shù)個數(shù)和類型為每個重載函數(shù)編碼(名字改編或名字修飾)。

            6、數(shù)組

            如果初始化的元素比數(shù)組中的元素少,則其余元素自動初始化為0。所以至少需要初始化第一個元素,才能將其余元素自動初始化為0。但是,如果聲明為static數(shù)組,則在沒有顯式初始化時,便以其將自動初始化為0。

            數(shù)組維數(shù)只能用常量聲明,無論是靜態(tài)數(shù)組還是自動數(shù)組。

            字符數(shù)組可以用字符串直接量(注:字符串直接量返回指向第一個字符的指針)初始化。

            char string1[ ]= " first " ;

            字符串 " first " 包含五個字符加一個特殊字符串終止符 ' \0 ' 。故string1的長度為6。

            將數(shù)組傳遞給函數(shù):

            原型:

            void modifyArray(int[ ] , int );

            void modigyArray(int anyArrayName[ ], int anyVariableName);

            C++編譯器將忽略原型中的變量名,上述兩種原型聲明等價。

            7、指針

            int a;

            int *aPtr = &a ;

            則&*aPtr和*&aPtr將返回相同的值,即為aPtr的值,可知&和*運(yùn)算符是互逆的。

            聲明為const的指針應(yīng)在聲明時初始化(如果是函數(shù)參數(shù),則用傳入函數(shù)的指針初始化)。

            結(jié)構(gòu)(類)總是按值調(diào)用,傳遞整個結(jié)構(gòu)(類)的副本。

            數(shù)組總是按引用調(diào)用,數(shù)組名就是數(shù)組第一個元素的地址。

            sizeof運(yùn)算符作用于數(shù)組名時,返回數(shù)組總共占用的字節(jié)數(shù)。

            double realArray[22];

            sizeof realArray /sizeof(double); //返回22

            char* suit[4]={" Hearts ", " Diamonds ", " Clubs ", " spades "};

            suit中的數(shù)組元素存放每個字符串的首字母的地址,因此suit是定長的。

            所以sizeof suit將返回16(如果單個地址占用4字節(jié))。

            8、函數(shù)指針

            函數(shù)指針包含函數(shù)在內(nèi)存中的地址。

            將函數(shù)指針傳給函數(shù):

            原型:

            void bubble( int[ ], const int, int ( * ) ( int, int ) );

            上述第三個參數(shù)即為函數(shù)指針類型。

            看函數(shù)定義:

            void bubble( int work[ ], const int size, int ( * compare ) ( int, int ) )

            {

                ( * compare) ( a, b); //a,b為兩個int型的參數(shù)

            或者

                compare( a, b); //a,b為兩個int型的參數(shù)

            }

            推薦使用第一種形式,因它顯示說明compare為函數(shù)指針,第二種形式容易認(rèn)為compare是個實際函數(shù)。

            函數(shù)指針數(shù)組聲明如下:

            void ( * f[ 3 ] )( int )={function1,function2,function3};

            上式聲明具3個函數(shù)指針的數(shù)組f。

            函數(shù)調(diào)用如下:

            (* f[0])(a);  //a為int型參數(shù)

            9、構(gòu)造函數(shù)與析構(gòu)函數(shù)

            一般情況下,析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)相反。

            全局范圍中定義的對象的構(gòu)造函數(shù)在文件中的任何其他函數(shù)(包括main)執(zhí)行之前調(diào)用(但不同文件之間全局對象構(gòu)造函數(shù)的執(zhí)行順序是不確定的)。當(dāng)main終止或者調(diào)用exit函數(shù)時調(diào)用相應(yīng)的析構(gòu)函數(shù)。

            當(dāng)程序執(zhí)行到對象定義時,調(diào)用自動局部對象的構(gòu)造函數(shù)。該對象的析構(gòu)函數(shù)在對象離開范圍時調(diào)用(即離開定義對象的塊時)。自動對象的構(gòu)造函數(shù)和析構(gòu)函數(shù)在每次對象進(jìn)入和離開范圍時調(diào)用。

            static局部對象的構(gòu)造函數(shù)旨在程序執(zhí)行首次到達(dá)對象定義時調(diào)用一次,對應(yīng)的析構(gòu)函數(shù)在main終止或調(diào)用exit函數(shù)時調(diào)用。

            可見構(gòu)造函數(shù)調(diào)用順序:

            全局對象-〉局部自動(或靜態(tài))對象(按執(zhí)行順序)。

            析構(gòu)函數(shù)調(diào)用順序:

            局部自動對象-〉main( )執(zhí)行結(jié)束后,靜態(tài)對象(局部或全局)-〉全局對象。

            10、關(guān)于成員函數(shù)返回引用

            不要讓類的public成員函數(shù)返回對該類private數(shù)據(jù)成員的非const引用(或指針),返回這種引用會破壞封裝。

            如:

            #include<iostream>
            using namespace std;

            class Time
            {
            public:
             int getHour();
             int &badSetHour(int);
            private:
             int hour;
             int minute;
             int second;
            };

            int Time::getHour()
            {
             return hour;
            }

            int &Time::badSetHour(int hh)
            {
             hour=(hh >= 0 && hh < 24 ) ? hh : 0;
             return hour;
            }

            int main()
            {
             Time t;
             int &hourRef=t.badSetHour(20);
             cout<<hourRef<<endl;

             hourRef=8;
             cout<<t.getHour()<<endl;
             
             t.badSetHour(12) = 5;
             cout<<t.getHour()<<endl;
             
             return 0;
            }

            輸出為:

            20

            8

            5

            posted on 2006-02-22 21:37 笑笑生 閱讀(171) 評論(0)  編輯 收藏 引用 所屬分類: C++語言
             
            Copyright © 笑笑生 Powered by: 博客園 模板提供:滬江博客
            中文成人久久久久影院免费观看 | 国产亚洲精午夜久久久久久| 久久国产免费观看精品3| 精品一二三区久久aaa片| 亚洲AV日韩精品久久久久久久| 中文字幕无码免费久久| 久久99精品国产99久久6男男| 国产精品国色综合久久| 日本精品久久久久影院日本| 怡红院日本一道日本久久| 中文字幕久久精品| 91久久精一区二区三区大全| 国产精品成人精品久久久| 超级97碰碰碰碰久久久久最新| 久久91这里精品国产2020| 久久精品国产男包| 99久久国产综合精品网成人影院| 伊色综合久久之综合久久| 久久精品这里热有精品| 亚洲中文字幕无码一久久区| 国产精品美女久久久免费| 婷婷久久香蕉五月综合加勒比 | 久久国产精品成人影院| 日日狠狠久久偷偷色综合免费 | 99久久伊人精品综合观看| 久久91精品国产91| 狠狠色伊人久久精品综合网| 久久婷婷五月综合国产尤物app| 色综合久久88色综合天天 | 国产精品成人精品久久久| 狠狠色丁香久久综合五月| 亚洲国产精品无码久久| 久久婷婷国产剧情内射白浆| 久久无码国产| 久久久久九国产精品| 久久人搡人人玩人妻精品首页| 99热精品久久只有精品| 久久97久久97精品免视看秋霞| 99久久精品影院老鸭窝| 久久99精品久久久久久hb无码| 久久综合给合久久狠狠狠97色|