• <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: 博客園 模板提供:滬江博客
            久久亚洲日韩精品一区二区三区| 免费国产99久久久香蕉| 2020久久精品亚洲热综合一本| 综合久久给合久久狠狠狠97色 | 国产精品欧美久久久久无广告| 久久久久人妻精品一区二区三区| 天天爽天天爽天天片a久久网| 色综合久久久久综合99| 99久久99这里只有免费费精品 | 国产香蕉久久精品综合网| 久久久久久久久久久久中文字幕 | 国产精品美女久久久久av爽| 7777精品伊人久久久大香线蕉| 久久99热狠狠色精品一区| 亚洲国产精品无码久久青草| 久久综合九色综合欧美狠狠| 无码八A片人妻少妇久久| 国产 亚洲 欧美 另类 久久| 日产精品99久久久久久| 一本久久综合亚洲鲁鲁五月天| 国产一区二区三区久久| 久久人人爽爽爽人久久久| 国产精品久久新婚兰兰| 久久精品国产亚洲5555| 中文字幕亚洲综合久久2| 精品久久久久香蕉网| 亚洲精品tv久久久久久久久 | 7777精品久久久大香线蕉| 欧美激情精品久久久久久久| 91精品国产91久久| 国产成人久久精品麻豆一区| 久久精品国产免费| 久久99毛片免费观看不卡| 久久综合丝袜日本网| 久久天堂电影网| 久久久91精品国产一区二区三区| 99re这里只有精品热久久| 国产精品久久久久久久久免费| 久久亚洲私人国产精品| 久久精品一区二区| 国产国产成人久久精品|