本章主要內容:
1.布林型
bool
在c++中
,bool
型別只有
true(非
0)和
flase(0)
兩個值,且bool型別只占用了乙個位元組.
例如:
#include intmain()
輸出結果:
b=0a=1,b=1
2.c++三目運算子
c++對三目運算子進行了公升級
,公升級後的三目運算子可以放在左值使用,
例如:
int a=1,b=2;(a>b?a:b)=100; //
由於a不大於b,所以返回值為b變數,即等價於: b=100
printf(
"a=%d,b=%d\n
",a,b );
輸出結果:
a=1,b=100
注意:放在左值使用時
,三目運算子可能返回的值都必須是變數
,若有常量
,則編譯會報錯
.3.c++的
&引用
3.1 引用在定義時,必須初始化,且型別必須一致,初始化的值必須是變數,而非常量
只用const
引用才允許初始化的值是常量
(在3.3小節會講解),
例如:
int a=4;int &b=a; //
引用b是a的別名,也就是a和b都是同乙個變數,操作b就等於操作a
//int &b=1;
//出錯,因為只有const引用才允許初始化的值是常量
3.2 &引用的本質
引用的本質就是乙個指標常量
(從反彙編看出
),因此引用所占用的空間大小與指標相同,比如
:
int & a; <---等價於--> int *const a;
引用比指標更適合做為函式的引數,具有更好的可讀性,例如
:
#include /*交換a和b的值
*/void swap(int& a,int&b)
intmain()
輸出結果:
a=10 b=5
3.3 const &引用
const &修飾為唯讀變數
例如:
#include intmain()
輸出結果:
a=10,b=0,c=0a=10,b=10,c=10
從結果可以看出:
注意:在初始化時
,比如變數c和
const引用b
定義的型別不同
,則將會生成乙個新的儲存空間給
b,並賦值
.例如:
char c= 'c';
const
int &b =c;
c='b'; //
修改c的值,對b沒有任何影響
printf(
"b='%c' c='%c'\n
",b,c);
輸出結果:
b='c' c='
b'
3.4 引用陣列
c++不支援引用陣列
,
因為在c中,
陣列存放的是連續相鄰的一串資料,所以
c++也要相容該特性。
而引用恰好破壞了該特性.
以乙個錯誤為例:
#include int a = 1; //全域性變數
intmain()
; //
編譯出錯
delete pc;
return0;
}
從上面可以看到
a, b, *pc這3
個變數的定義位置都不同
,分配的儲存空間位址也是不連續的
,然後又使
:所以導致陣列存放的資料不是連續相鄰的,編譯出錯
下章接著來學習:
3.c++內聯函式,預設引數,佔位引數
2 C 語言運算子過載
運算子過載 在c 中,運算子的過載就是把運算子的符號賦予新的含義,如果類過載了運算子,那麼就可以用判斷兩個類是否相等。include include class cgirl int main 通過上述結果能夠知道,因為操作符過載函式 operator 是cgirl類的乙個成員函式,所以物件girl1...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式1的值為假 或為0 ...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。基本格式 是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 執行流程 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式...