第五章 表示式

2021-07-04 17:49:32 字數 1676 閱讀 5704

表示式這章比較簡單,一般有過c的基礎的人都應該問題不大,要知道連我都覺得比較簡單,相信你們肯定更加容易了。

new和delete表示式:動態建立和釋放陣列,定義變數時,必須指定其資料型別和名字。然而動態建立物件時,只需要指定其資料型別,而不必為該物件命名。取而代之的是,new表示式返回值指向新建立物件的指標,我們通過指標來訪問物件:

int i;

int   *pi=new int;

這個new表示式在自由儲存區中分配建立了乙個整型物件,並且返回此物件的位址,並且該位址初始化指標pi;

動態建立物件初始化:int i(1024);

int *pi=new int(1024);

string s(10,『9』);

string *ps=new string(10,『9』);

建立const物件的動態分配時必須初始化:const int *pci=new const int(1024);

delete 操作:接著上面的操作delete ps;

delete pi;

delete pci;

還有乙個問題就是型別轉換:在賦值操作當中,因為不可能更改做運算元物件的型別,因此左運算元的型別佔主導地位。如果賦值操作的左右型別不相同,則右運算元會被轉換為左邊的型別。

強制型別轉換:1.命名的強制轉換:轉換符號的一般形式如下:

cast-name(expression);

cast-name為:static_cast,dynamic_cast、const_cast、reinterpret_cast之一,type為轉換的目標型別,而expression則是被強制轉換的值。

1.dynamic_cast

支援執行時識別指標或引用所指向的物件。

2.const_cast

將轉換掉表示式的const性質。

3.static_cast

編譯器**執行的任何型別轉換都可以由static_cast顯示完成:

double d=97.00;

char ch=static_cast(d);

當需要將乙個較大的算術型別賦值給較小的型別的時候,使用強制型別轉換非常有用。

void*p=&d;

double *dp=static_cast(p);

4.reinterpret_cast

通常為運算元的位模式提供較低層次的重新解釋。

這章呢主要是介紹了c++中的操作符的使用情況,有算術運算子,關係運算子和邏輯運算子以及位操作符等等,這章最重要的是要知道運算子的優先順序的問題:從上到下,優先順序依次遞減:(熟悉下面的**)

++   後自增操作  lvalue++

--    後自減操作  lvalue--

typeid   型別id   typeid(type)

typeid   執行時型別id  typeid(expr)

顯示強制型別轉換  型別轉換 cast_name(expr)

sizeof  物件大小

C primer 第五章 表示式

1 和 均是 2和除以2.2 為什麼建議多使用前自增?因為前置操作需要做的工作更少,只需要加1返回結果就行。而後置操作則需要先儲存運算元原來的值,以便返回未加1之前的操作結果。對於int型物件和指標,編譯器可以優化掉這項額外工作。但是對於更多的複雜迭代器型別,這種額外的工作可能花費更大的代價。3 s...

第五章正規表示式

使用正規表示式 import re s 100 north main road re.sub road rd.s 100 north broad rd.1 在python中,正規表示式功能包含在re module中 2 re.sub 方法可以做字串替換,正規表示式 要替換的字串,原始字串 searc...

C primer第五章學習 表示式

c 還提供了另外兩種指標轉換 指向任意資料型別的指標都可轉換為 void 型別 整型數值常量 0 可轉換為任意指標型別。顯式轉換也稱為強制型別轉換 cast 包括以下列名字命名的強制型別轉換操 作符 static cast dynamic cast const cast和 reinterpret c...