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

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

http://m.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 閱讀(275) 評論(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一区| 国产美女精品| 国产亚洲成av人在线观看导航| 国产私拍一区| 亚洲国产一区在线观看| 亚洲美女在线一区| 亚洲影视九九影院在线观看| 久久久久国产一区二区三区四区 | 久久精品国产成人| 欧美黄色影院| av成人手机在线| 亚洲欧美在线一区二区| 久久午夜电影网| 欧美日本在线播放| 国产午夜精品久久久久久免费视 | 久久综合影音| 日韩视频在线观看| 欧美一区网站| 欧美日韩国产欧| 韩国一区电影| 中日韩视频在线观看| 久久一二三区| 亚洲视频自拍偷拍| 久久综合九色综合欧美就去吻 | 亚洲电影毛片| 亚洲直播在线一区| 欧美aⅴ99久久黑人专区| 欧美日韩在线视频一区二区| 黄色精品免费| 亚洲一区美女视频在线观看免费| 欧美a级片一区| 久久九九免费| 国产精品久久久久久久久婷婷| 国产一区二区观看| 一区二区三区av| 免费在线观看精品| 亚洲综合视频一区| 欧美激情中文字幕一区二区| 国产综合18久久久久久| 亚洲少妇在线| 亚洲国产欧美日韩另类综合| 午夜一级在线看亚洲| 欧美日韩日日骚| 亚洲黄色影片| 欧美不卡视频| 久久精品国产免费| 欧美日韩中文字幕精品| 亚洲精品乱码视频 | 亚洲国产国产亚洲一二三| 欧美一区二区三区四区在线| 国产精品久久久久av| 99视频有精品| 亚洲精品一区中文| 欧美日韩成人在线观看| 亚洲人成亚洲人成在线观看| 男女精品视频| 久久先锋影音| 亚洲高清不卡av| 欧美激情日韩| 欧美成人免费一级人片100| 亚洲国产日韩欧美一区二区三区| 麻豆av一区二区三区| 久久精品系列| 亚洲第一在线视频| 欧美成人乱码一区二区三区| 久久久天天操| 亚洲高清在线观看一区| 亚洲第一中文字幕| 欧美日韩免费看| 亚洲欧美日韩国产精品| 亚洲午夜精品久久| 国产欧美69| 久久人人97超碰精品888| 欧美亚洲在线观看| 一区在线免费| 亚洲国产一区二区三区高清 | 红桃av永久久久| 欧美~级网站不卡| 欧美美女bb生活片| 亚洲欧美国产77777| 午夜精品久久久| 雨宫琴音一区二区在线| 亚洲人成小说网站色在线| 国产精品久久九九| 久久一日本道色综合久久| 久热精品视频在线观看| 在线视频欧美精品| 欧美一区二区精品| 亚洲啪啪91| 亚洲欧美日韩国产中文| 精品成人国产| 亚洲天堂成人在线视频| 国产亚洲高清视频| 欧美激情bt| 国产精品性做久久久久久| 老色鬼久久亚洲一区二区 | 亚洲免费激情| 黄色小说综合网站| 亚洲乱码国产乱码精品精98午夜| 国产日韩欧美在线播放不卡| 欧美国产成人精品| 国产精品男人爽免费视频1| 欧美 日韩 国产精品免费观看| 欧美日韩午夜剧场| 老牛嫩草一区二区三区日本| 欧美视频一区二区三区四区| 老司机午夜免费精品视频| 欧美私人啪啪vps| 欧美激情中文字幕在线| 国产欧美在线| 一道本一区二区| 亚洲精品国精品久久99热一| 欧美一区二区三区视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲综合第一页| 亚洲一区二区免费在线| 蜜月aⅴ免费一区二区三区| 欧美中文字幕在线观看| 欧美色区777第一页| 亚洲福利一区| 在线成人激情黄色| 欧美一区二区精品| 欧美一区二视频| 国产精品久久久久久久久久久久久久| 欧美激情一区在线| 亚洲电影av在线| 老司机一区二区三区| 久久综合九色欧美综合狠狠| 国产乱码精品一区二区三区av| 日韩亚洲视频在线| 在线一区二区视频| 欧美日韩中国免费专区在线看| 亚洲高清不卡在线| 亚洲国产免费看| 女同性一区二区三区人了人一 | 欧美91视频| 一区视频在线| 乱人伦精品视频在线观看| 欧美国产精品日韩| 亚洲人成人一区二区在线观看| 麻豆精品国产91久久久久久| 欧美成人免费va影院高清| 亚洲第一页中文字幕| 欧美成人免费全部观看天天性色| 欧美黄在线观看| 亚洲乱码国产乱码精品精天堂| 欧美激情在线狂野欧美精品| 日韩一二三区视频| 午夜精品久久久久久久久久久久久| 国产精品www| 性久久久久久| 欧美岛国激情| 中文久久乱码一区二区| 国产精品任我爽爆在线播放 | 99视频超级精品| 欧美激情视频在线播放| 999亚洲国产精| 欧美在线免费一级片| 国语自产精品视频在线看一大j8 | 亚洲一区在线免费| 欧美在线视频免费观看| 黄色成人在线| 欧美精品福利在线| 亚洲午夜久久久久久久久电影院| 久久精品成人一区二区三区| 亚洲国产精品久久久久秋霞影院| 欧美精品一区二区三区一线天视频| 夜久久久久久| 久久午夜视频| 亚洲一级黄色| 在线观看日韩av电影| 欧美精品啪啪| 久久国产一区二区三区| 亚洲精品国产拍免费91在线| 午夜精品一区二区三区在线视 | 亚洲蜜桃精久久久久久久| 欧美一区二区播放| 亚洲精品久久久久| 国产欧美午夜| 欧美精品一区二区三区高清aⅴ| 午夜精品免费视频| 亚洲黄色大片| 久久影音先锋| 亚洲欧美网站| 日韩一区二区精品| 国产亚洲欧洲一区高清在线观看| 欧美—级a级欧美特级ar全黄| 性色av一区二区三区| 亚洲乱码国产乱码精品精| 麻豆91精品| 久久精品国产精品亚洲综合| 99亚洲伊人久久精品影院红桃| 韩国在线一区| 国产亚洲成年网址在线观看| 欧美视频第二页| 欧美激情一区二区| 麻豆9191精品国产|