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

            熱轉印www.yxheatpress.com

            公司網站模板http://qiyemoban.software8.co/

            常用鏈接

            統計

            友情鏈接

            最新評論

            c++中常見問題

            c++中常見問題
            1、c++變量初始化規則
            內置類型變量是否初始化決定于變量的定義位置,在函數體外定義的變量都自動初始化為0,函數體內定義的變量都不進行自動初始化。類類型變量的初始化,類通過定義一個或多個構造函數來控制類對對象的初始化,如果定義某個類的變量時沒有提供初始化式,這個類就通過默認構造函數來實現。
            2、引用(reference)與指針(pointer)
            引用就是對象的另一個名字,通過在變量前添加&符號來定義。定義時必須初始化:
            int  ival=1024;
            int &refval= ival;//OK:refval refers to ival
            int &refval;//error:a reference must be initialized
            int &refval=1024;//error:initializer must be an object
            //www.dgbalance.com
            作用在引用上的操作與作用在對象上的操作完全等價,當引用初始化后,只要改引用存在就綁定到初始化時指向的對象,不可更改。
            const reference是指向const對象的引用,利用該引用可以讀取但不可以修改其所指向的對象,普通引用不能指向const對象。
            指針用于指向對象,其值是所指向對象在內從中的地址,通過在變量前加*來定義:
            string *pstr,ppstr;//pstr is a pointer to string,ppstr is a string
            用指針操作內存容易發生越界錯誤,故定義指針后建議立即進行初始化,對指針的初始化或者賦值僅能使用以下的四種類型值:0值常量表達式;類型匹配對象的地址;同一對象的下一地址;同類型的另一有效指針。 c++提供了一種特殊的指針void*,它可以保存任何類型對象的地址。
            3、指針和const限定符
            指向const對象的指針,定義是不需要進行初始化,通過改指針可以反問但不可以修改該對象。const對象必須使用const類型指針去指向。
            const double pi=3.1415926;
            const double *ptr=&pi;//ptr is a pointer to a const
            const指針是一種常量,本身值不能修改,定義時必須進行初始化,eg:
            double pi = 3.1415926;
            double *const prt=&pi;//ptr is a const pointer
            指向const對象的const指針這種類型的指針本身值不能改變,通過它也只能訪問所指對象不能修改對象的值。eg:
            const double pi=3.1415926;
            const double *const ptr=&pi;//ptr is a const pointer to a const object
            4、指針和typedef
            借用一個例子來說明這個問題,eg:
            typedef string *pstring;
            const pstring cstr;
            大多說人會認為cstr是個const string*(原式等價于 const string *cstr)類型,但這是錯誤的,原因在于將typedef當成了文本擴展。申明const pstring時,const修飾的是pstring類型,這是一個指針,所以應該將其理解為cstr定義為指向string類型的一個const指針,等價于:string *const cstr;
            5、c++中的特殊數據類型
            string的長度string::size_type
            中元素的個數vector::size_type
            數組中元素個數:size_t
            兩個指針之間的距離度量:ptrdiff_t
            5、多維數組
            多維數組其實質就是數組中的數組,eg:
            int ia[3][4];//arry of size3,eachelement is an arry of ints of size 4
            int (*ip)[4] = ia;//ip points to an arry of 4 ints
            int *ip[4];// arry of pointer to int 
            6、c++中的p++與++p的效率問題
            我們在c++中一般使用前置操作符,因為前置操作效率更高,僅需加1后返回加1的結構即可;而后置操作符必須先保存操作數原來的值,以便返回未加1之前的值作為操作的結果。
            *beg++;等價于*beg;++beg;
            7、函數參數問題
            const形參可以避免復制操作
            當數組作為函數參數時,編譯器只會檢查實參是否是指針,指針的類型是否與形參形參匹配,而不檢查數組長度。在傳遞數組時,實參是指向數組第一個元素的指針,形參復制的是這個指針的值。
            通過引用傳遞數組時,實參要求與形參類型大小完全匹配。
            二維數組做參數:void printArray(int(arr*)[10],int rowSize);
            8、函數指針
            返回指向函數的指針,eg:int (*ff(int))(int*,int);解釋如下:ff是一個帶有int型的函數,該函數返回指向函數的指針,該指針指向的函數類型是int(*) (int*,int);即所指向的函數返回int型,并帶有兩個形參。使用typedef定義更加簡明易懂:
            typedef int(*PF)(int*,int);
            PF ff(int);

            posted on 2012-11-01 09:06 不聽話的 閱讀(1431) 評論(0)  編輯 收藏 引用

            欧美va久久久噜噜噜久久| 狠狠色丁香婷婷久久综合五月| 久久婷婷人人澡人人| 久久久www免费人成精品| 日本精品久久久久影院日本| 国产99久久久国产精品~~牛| 精品久久久久久久| 久久精品国产秦先生| 日本精品久久久久中文字幕8| 狠狠色丁香久久综合五月| 99久久人妻无码精品系列蜜桃| 国产成人精品久久二区二区| 国产精品久久久久久久| 久久这里只精品国产99热| 国产精品99久久久久久猫咪| 精品国产婷婷久久久| 日韩精品无码久久一区二区三| 理论片午午伦夜理片久久| 中文字幕亚洲综合久久菠萝蜜| 久久久久久免费视频| 色综合久久中文字幕无码| 久久99国产精品99久久| 久久国产成人精品国产成人亚洲| 久久久久99精品成人片牛牛影视 | 精品蜜臀久久久久99网站| 99久久精品国内| 久久精品国产99久久久香蕉| 日日狠狠久久偷偷色综合96蜜桃 | 久久久久久夜精品精品免费啦| 日本欧美久久久久免费播放网| 成人免费网站久久久| 久久99精品国产麻豆婷婷| 香蕉久久夜色精品国产2020| 日产精品99久久久久久| 国内精品伊人久久久久| 欧美黑人激情性久久| 91久久香蕉国产熟女线看| 中文精品久久久久人妻| 成人午夜精品久久久久久久小说 | 无码日韩人妻精品久久蜜桃| 国产午夜精品久久久久九九电影|