青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

春暖花開
雪化了,花開了,春天來了
posts - 149,comments - 125,trackbacks - 0

http://www.shnenglu.com/mymsdn/archive/2008/12/25/cpp-notes-3.html
21、vector的動態增長優于預先分配內存。

使用vector的時候最好動態地添加元素。它不同于C和Java或其他語言的數據類型,為了達到連續性,更有效的方法是先初始化一個空vector對象,然后再動態添加元素,而不是預先分配內存。

22、vector值初始化

內置->0

有默認構造->調用默認構造

無默認構造,有其他構造->程序員手動提供初始值

無默認構造,也無其他構造->標準庫產生一個帶初值的對象

23、數組下標的類型

C++中,數組下標的正確類型是size_t而不是int,size_t是一個與機器相關的unsigned類型。

24、在聲明指針的時候,可以用空格將符號*與其后的標識符分隔開來,string *ps與string* ps都是可以的,但后者容易產生誤解,如:

string* ps1,ps2;     //ps1是指針,而ps2是一個string對象

也就是說,人們可能誤把string和string*當作兩個類型,或者說string*被當作一種新類型來看待,但這是錯的

25、一個有效的指針必然是以下三種狀態之一:

  1. 保存特定的對象的地址;
  2. 指向某個對象后面的另一對象;
  3. 或者是0值。表明它不指向任何對象。

其中int *pi=0;與int *pi;是不同的。前者是初始化指針指向0地址的對象(即為NULL)(pi initialized to address to no object),后者卻是未初始化的(ok, but dangerous, pi is uninitialized)。

編譯器可以檢測出0值的指針,程序可判斷該指針并未指向一個對象,而未初始化的指針的使用標準并未定義,對大多數編譯器來說,如果使用未初始化的指針會將指針中存放的不確定值視為地址,然后操縱該內存地址中存放的位內容,使用未初始化的指針相當于操縱這個不確定的地址中存儲的基礎數據,因此對未初始化的指針進行解引用時,通常會導致程序崩潰。

26、void*指針

void*指針只支持幾種有限的操作:

  1. 與另一個指針進行比較;
  2. 向函數傳遞void*指針或從函數返回void*指針;
  3. 給另一個void*指針賦值。

不允許使用void*指針操縱它所指向的對象。

27、指針和引用的比較(P105)

雖然使用引用(reference)和指針都可間接訪問另一個值,但它們之間有兩個重要區別。第一個區別在于引用總是指向某個對象:定義引用時沒有初始化是錯誤的。第二個重要區別則是賦值行為的差異:給引用賦值修改的是該引用所關聯的對象的值,而并不是使引用與另一個對象關聯。引用一經初始化,就始終指向同一個特定對象(這就是為什么引用必須在定義時初始化的原因)。

28、指針與typedef(P112)

const放在類型前和放在類型后都可以表示同樣的意思:

const string s1;
string const s2;

s1和s2均表示常量字符串對象。

但因此就導致了下面的句子可能產生誤解:

typedef string *pstring;
const pstring cstr;

容易錯把typedef當成文本擴展而產生下面的理解:

const string *cstr; //這并非上面例子的正確意思!(錯誤)

應該從聲明的句子看,也就是說只看const pstring cstr;,在這里pstring是一種指針類型,const修飾的是這個類型,因此正確的理解應該是:

string *const cstr;

而const pstring cstr;其實可以表示為pstring const cstr;,這樣的寫法則不容易產生誤解。從右向左閱讀的意思就是:cstr是const pstring類型,即指向string對象的const指針。

29、創建動態數組(注意點見代碼注釋)

const char *cp1 = "some value";
char *cp2 = "other value";
int *piArray1 = new int[10];    //內置類型沒有初始化
int *piArray2 = new int[10]();    //內置類型需要加空圓括號,對數組元素進行初始化
std::string *psArray1 = new std::string[10];    //默認構造函數初始化
std::cout<<"----------"<<std::endl
<<"*cp1\t\t:"<<*cp1<<std::endl
<<"*cp2\t\t:"<<*cp2<<std::endl
<<"*piArray1\t:"<<*piArray1<<std::endl
<<"*piArray2\t:"<<*piArray2<<std::endl
<<"*psArray1\t:"<<*psArray1<<std::endl
<<"----------"<<std::endl;

但是下面的結果卻與概念上的不同:

////Visual Studio & MS VC++
//----------
//*cp1            :s
//*cp2            :o
//*piArray1       :-842150451
//*piArray2       :0
//*psArray1       :
//----------
////Eclipse&G++
//----------
//*cp1        :s
//*cp2        :o
//*piArray1    :4064608
//*piArray2    :4064560
//*psArray1    :
//----------

看來不同的編譯器對此的定義還是有所不同,注意看*piArray2的值,按照說明應該是初始化為0,但這里卻仍然表現出與*piArray1一樣的值,說明并沒有發生初始化。

對于動態分配的數組,其元素只能初始化為元素類型的默認值,而不能像數組變量一樣,用初始化列表為數組元素提供各不相同的初值。

30、const對象的動態數組

//P118
//error:uninitialized const array
const int *pciArray1 = new const int[10];
//ok:value-initialized const array
const int *pciArray2 = new const int[10]();
std::cout<<*pciArray1<<std::endl;
std::cout<<*pciArray2<<std::endl;

上面的示例的注釋來自書中,但在VC++編譯器和G++編譯器下卻不同,具體表現為:

  • VC++:編譯正確,第一句輸出隨機地址的值,第二句輸出初始化的0(其中按照“標準”第一種因為未向const變量初始化,應該無法通過編譯,但這里可以)
  • G++:編譯錯誤,第一句的錯誤信息為“uninitialized const in `new' of `const int'”,但第二句按照標準應該輸出0的,這里卻輸出了隨機地址的值。

看來兩個編譯器對這一問題的看法不太一致。

posted on 2008-12-26 09:15 Sandy 閱讀(277) 評論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲免费在线观看视频| 日韩亚洲在线| 久久嫩草精品久久久精品| 国产日韩在线亚洲字幕中文| 欧美中文字幕视频| 欧美在线视频一区二区| 黄色成人在线观看| 欧美国产大片| 欧美视频观看一区| 欧美在线视频观看免费网站| 久久精品99无色码中文字幕| 亚洲国产精品成人久久综合一区| 亚洲国产99| 欧美日韩免费区域视频在线观看| 性色av一区二区三区| 久久不射2019中文字幕| 亚洲精品久久久久| 亚洲自拍啪啪| 亚洲黄色免费电影| 亚洲一区二区三区中文字幕在线| 国产日韩综合| 亚洲毛片av| 在线观看免费视频综合| 亚洲每日在线| 曰韩精品一区二区| 亚洲天堂成人在线视频| 影音先锋欧美精品| 中文av一区特黄| 在线播放豆国产99亚洲| 在线一区二区三区四区五区| 在线看欧美视频| 亚洲一区在线播放| 日韩一级视频免费观看在线| 性做久久久久久| 亚洲午夜精品在线| 久久夜精品va视频免费观看| 亚洲免费小视频| 欧美成人视屏| 麻豆成人综合网| 国产日韩欧美精品一区| 一区二区三区免费网站| 最新成人在线| 久久精品视频网| 欧美亚洲视频在线看网址| 欧美另类一区| 亚洲国产专区校园欧美| 精品av久久707| 午夜精品一区二区三区电影天堂 | 国语精品中文字幕| 一区二区精品在线| 日韩视频永久免费观看| 久久视频免费观看| 久久久噜久噜久久综合| 国产伦精品一区二区三区照片91| 亚洲免费观看在线视频| 亚洲伦理在线| 欧美韩日一区二区| 亚洲高清在线精品| 亚洲精品国产精品国自产在线 | 亚洲欧美激情视频| 亚洲欧美在线一区二区| 欧美四级伦理在线| 一区二区三区欧美亚洲| 在线视频亚洲欧美| 欧美日韩精品不卡| 亚洲精品久久久一区二区三区| 在线视频国产日韩| 免费久久精品视频| 亚洲国内高清视频| 99精品福利视频| 欧美少妇一区| 午夜精品久久久久久久白皮肤 | 美女福利精品视频| 尤物精品在线| 欧美粗暴jizz性欧美20| 亚洲精品欧美极品| 亚洲欧美欧美一区二区三区| 国产精品久久久亚洲一区| 亚洲欧美成人在线| 久久夜色精品国产欧美乱| 在线观看欧美精品| 欧美精品免费视频| 一区二区三区久久久| 久久久国产精品一区| 亚洲第一中文字幕| 欧美啪啪成人vr| 亚洲在线播放电影| 久久久国产精品一区二区中文| 亚洲大片av| 欧美日韩另类国产亚洲欧美一级| 亚洲一区二区三区免费在线观看| 久久九九久久九九| 亚洲精品中文字幕有码专区| 欧美三级日韩三级国产三级| 新狼窝色av性久久久久久| 欧美电影在线| 欧美一区二区黄| 亚洲国产精品一区二区www在线| 欧美人体xx| 久久www成人_看片免费不卡| 亚洲高清在线| 久久精品综合| 在线亚洲精品| 亚洲电影一级黄| 国产精品久久久久久久久婷婷 | 99在线|亚洲一区二区| 久久国产精品久久久久久久久久| 亚洲人成小说网站色在线| 国产精品美女久久久久久免费| 久久欧美肥婆一二区| 在线一区亚洲| 91久久精品日日躁夜夜躁欧美| 欧美在线精品免播放器视频| aⅴ色国产欧美| 激情成人在线视频| 国产精品久久久久久五月尺| 欧美aaaaaaaa牛牛影院| 午夜欧美不卡精品aaaaa| 亚洲精品免费看| 免费观看国产成人| 欧美在线视频一区| 亚洲一区三区视频在线观看| 亚洲国产精品专区久久| 国产视频一区三区| 国产精品久久一区主播| 欧美激情国产精品| 久久久久9999亚洲精品| 亚洲欧美综合国产精品一区| 亚洲另类春色国产| 亚洲高清av在线| 欧美电影专区| 亚洲国产综合在线| 亚洲国产另类久久久精品极度| 欧美日韩国产页| 欧美a级一区二区| 久久午夜电影网| 欧美在线视频全部完| 午夜久久tv| 亚洲一级在线观看| 亚洲午夜性刺激影院| 日韩视频在线你懂得| 亚洲人成网在线播放| 亚洲电影免费观看高清完整版在线观看 | 亚洲韩日在线| 永久免费视频成人| 在线看片成人| 1769国产精品| 亚洲韩日在线| 亚洲激情av| 亚洲狼人综合| 99热在这里有精品免费| 一区二区动漫| 亚洲一区免费网站| 小嫩嫩精品导航| 久久婷婷久久| 亚洲成人在线免费| 国产亚洲欧美一级| 国产欧美综合在线| 激情成人中文字幕| 亚洲人成人一区二区三区| 99视频国产精品免费观看| 亚洲午夜黄色| 久久精品女人的天堂av| 美女诱惑一区| 91久久久久久久久久久久久| 99国产精品99久久久久久粉嫩 | 欧美不卡福利| 亚洲大胆av| 99视频国产精品免费观看| 亚洲影院在线观看| 久久国内精品自在自线400部| 美日韩精品免费观看视频| 欧美日韩精品久久| 国产精品视频在线观看| 在线观看日韩欧美| 亚洲视频免费| 久久久久.com| 亚洲精品麻豆| 午夜精品久久久久久| 免费观看成人| 国产日韩精品入口| 日韩亚洲在线| 久久综合狠狠综合久久激情| 亚洲日韩欧美视频| 久久国产色av| 国产精品福利片| 亚洲日本电影在线| 久久精品91久久久久久再现| 最新成人在线| 久久国产成人| 国产精品人人做人人爽| 亚洲日本免费| 久久综合色综合88| 亚洲一区国产| 欧美日韩国产一区二区| 亚洲国产经典视频| 久久久久久亚洲精品杨幂换脸| 夜夜嗨一区二区| 欧美精品在线一区| 亚洲国产日韩美|