C Primer學習筆記 (二)

2021-04-18 13:43:21 字數 3928 閱讀 1341

case true:

string file_name = getname();

break;

case false:

//….

這個**不行,想想

,如果先執行了

false,

然後false

裡面用到了

file_name

怎麼辦???

會提示沒有定義

!!!(

並且編譯器會報錯

,dev c++

嘗試了)

因此要在

true

後新增大括號

,表明區域性作用域

, 或者在

switch

外面定義變數

.#include

using namespace std;

int main()

0x22ff70

0x22ff74

434如:string::size_type find_char(string& s, char c)

則find_char(「hello world」, 『h』)

用不了,因為

hello..

是字串常量

是const

物件宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求位址,就是對目標變數求位址。

&ra與

&a相等。

另外取sizeof(rn)

與其原來的值一樣

,sizeof(rd)==8,rd

是乙個double

的引用!!!

不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。

不能建立引用的引用,不能建立指向引用的指標。因為引用不是一種資料型別,所以沒有引用的引用,沒有引用的指標。

例如:int n

;int &&r=n;//

錯誤,編譯系統把

"int &"

看成一體,把

"&r"

看成一體,即建立了引用的引用,引用的物件應當是某種資料型別的變數

int &*p=n;//

錯誤,編譯系統把

"int &"

看成一體,把

"&p"

看成一體,即建立了指向引用的指標,指標只能指向某種資料型別的變數

值得一提的是,可以建立指標的引用

例如:int*p;

int *&q=p;//

正確,編譯系統把

"int *"

看成一體,把

"&q"

看成一體,即建立指標

p的引用,亦即給指標

p起別名q。

注意:學會這種分析方法,把什麼看成一體,又把什麼看成一體

怎麼做?會嗎?

// 最大公約數的遞迴函式

#include

using namespace std;

int maxfactor(int n, int m);

int main()

int maxfactor(int n, int m)

後面兩種參考

c++ primer

的演算法,前面是自己的

cout<

cout<

null

cout<

#include

using namespace std;

int main()

flushends endl

上面空格處有乙個

null

,在執行結果視窗賦值進來時後面的

endl

複製不了了,因為字串已經結束,

自己新增的,

顯示執行結果!!!

1)必須支援賦值運算子

2)必須可以複製

3)引用型別不可以

4)輸入輸出

io標準庫型別不可以

while(first != end)

dovector vec;

vector::size_type ix;

cout<

<

//for(int i=0; i<10; i++)

這個也行,當然可以使用整型啊

for( ix=0; ix<10; ix++)

vec.push_back(ix);

// for(int i =0; i!=10; i++)

cout<

<

while(vec.size()!=vec.capacity())

vec.push_back(10);

cout<

<

vec.push_back(100);

cout<

<

結果:vec size: 0 capacity: 0

vec size: 10 capacity: 16

vec size: 16 capacity: 16

vec size: 17 capacity: 32

請按任意鍵繼續

. . .

在普通的非

const

成員函式中,

this

指標型別是乙個指向類型別的

const

指標,在

const

成員函式中,

this

指標是乙個指向

cosnt

類型別的

cosnt

指標。

1)引用型別

2)cosnt

成員3)

缺少預設建構函式的類型別成員(如果沒有建構函式,系統預設提供乙個,就算有預設建構函式;

只在定義了非預設建構函式,但是又沒有過載預設建構函式的情形)

解釋原因:可以初始化

const

物件或引用型別的物件,但是不能對它們賦值!!!!

1)

呼叫方式:

pair.operator++(0);//

字尾形式,加了一

0

pair.operator++();//

字首形式

2)

原型:

class check

3)

實現:

// 字首的實現

check check::operator++()

//字尾的實現:

check check::operator++(int)

已經定義的類才可以做基類。如果宣告了

item_base

類,但是沒有定義它,不能用它作為基類:

class item_base;

class bulk_item: public item_base

這就是錯誤的!!!

全域性命名空間(預設,沒有名字,呼叫方法

:: )

在main

之外!未命名空間,用來取代檔案中的靜態宣告

C Primer學習筆記(二)

繼續。1.size t和string size type,vector size type.bitset的size函式返回值型別是size t。string和vector的size函式返回值型別是對應的size type size t 是乙個於機器無關的unsigned型別,其大小足以儲存記憶體物件...

c primer學習筆記(二)

1.從const 成員函式返回 this 在普通的非 const 成員函式中,this 的型別是乙個指向類型別的 const 指標,可以改變 this 所指向的值,但不能改變 this 所儲存的位址。在 const 成員函式中,this 的型別是乙個指向 const 類型別的 const 指標,既不...

C Primer 學習筆記(二)

第二章 2.1乙個char的空間應確保可以存放機器基本字符集中任意字元對應的數字值,也就是說乙個char的大小和乙個機器位元組一樣 2.2可定址的最小記憶體塊稱為位元組,儲存的基本單元稱為字 2.3一般來說,float和double分別有7和16個有效位 2.4在算術表示式中不要使用char或boo...