使用#define的不安全性
# include
using namespqce std;
intmain()
輸出 :t2 is 2原因:c++把第七行語句解釋為:
cout<<"t2 is "《用const取代#define指向常量的指標輸出:t2 is 0# include
using namespqce std;
intmain()
所指物件為常量,指標為變數
const
char
*p =
"good";*
(p+2)=
"i";
//錯誤
p ="very"
;//正確
int i =5;
const
int*p =
&i;*p =6;
//錯誤
i =6
;//正確
作用:防止無意修改引數的值
# include
using
namespace std;
void
mystrcpy
(char
* dest,
const
char
*src)
intmain()
指標常量
在指標名前常量const,表示指標本身是常量
char
*const p =
"good"
;p =
"very"
;//錯誤,指標不能修改
*(p+2)
='i'
;//正確,指向的內容可以修改
指向常量的常量指標
指向內容和指標都為常量
const
char
*const p =
"good"
p ="very"
;//錯誤
*(p+2)
='i'
;//錯誤
注意:
const物件的位址只能賦值給指向const物件的指標,但是指向cosnt物件的指標也可以指向非const物件
const
int i =5;
int*p1 =
&i;//錯誤
const
int*p2 =
&i;int j =6;
p2 =
&j;//正確
const用法詳解
物件導向是c 的重要特性.但是c 在c的基礎上新增加的幾點優化也是很耀眼的 就const直接可以取代c中的 define 以下幾點很重要,學不好後果也也很嚴重 1.const常量,如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安...
const 用法詳解
物件導向是c 的重要特性.但是c 在c的基礎上新增加的幾點優化也是很耀眼的 就const直接可以取代c中的 define 以下幾點很重要,學不好後果也也很嚴重 1.const常量,如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安...
const用法詳解
看 到const 關鍵字,很多人想到的可能是 const 常量,其實關鍵字 const 並不能把變數變成常量!在乙個符號前加上 const 限定符只是表示這個符號 不能被賦值。也就是它的值對於這個符號來說是唯讀的,但它並不能防止通過程式的內部 甚至是外部 的方法來修改這個值 c專家程式設計 p21 ...