成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++基礎 詳細介紹const的用法

開發 后端
const關鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一些幫助。來看本文。

const可以用來定義常量,t定義時,定義了常量的類型,所以更精確一些。

面向對象是C++的重要特性. 但是c++在c的基礎上新增加的幾點優化也是很耀眼的。就const直接可以取代c中的#define 。以下幾點很重要,學不好后果也也很嚴重 。

const

1. 限定符聲明變量只能被讀

  1. const int i=5;   
  2. int j=0;   
  3. ...   
  4. i=j; //非法,導致編譯錯誤   
  5. j=i; //合法  

 

2. 必須初始化

  1. const int i=5; //合法   
  2. const int j; //非法,導致編譯錯誤  

 

3. 在另一連接文件中引用const常量

  1. extern const int i; //合法   
  2. extern const int j=10; //非法,常量不可以被再次賦值  

 

4. 便于進行類型檢查

用const方法可以使編譯器對處理內容有更多了解。

  1. #define I=10   
  2. const long &i=10; /*dapingguo提醒:由于編譯器的優化,使得在const long i=10; 
  3. 時i不被分配內存,而是已10直接代入以后的引用中,以致在以后的代碼中沒有錯誤,為達到說教效果,
  4. 特別地用&i明確地給出了i的內存分配。不過一旦你關閉所有優化措施,即使const long i=10;也會引起后面的編譯錯誤。*/   
  5. char h=I; //沒有錯   
  6. char h=i; //編譯警告,可能由于數的截短帶來錯誤賦值。  

 

5. 可以避免不必要的內存分配

  1. #define STRING "abcdefghijklmn\n"   
  2. const char string[]="abcdefghijklm\n";   
  3. ...   
  4. printf(STRING); //為STRING分配了第一次內存   
  5. printf(string); //為string一次分配了內存,以后不再分配   
  6. ...   
  7. printf(STRING); //為STRING分配了第二次內存   
  8. printf(string);   
  9. ...  

 

由于const定義常量從匯編的角度來看,只是給出了對應的內存地址,而不是象#define一樣給出的是立即數,所以,const定義的常量在程序運行過程中只有一份拷貝,而#define定義的常量在內存中有若干個拷貝。

6. 可以通過函數對常量進行初始化

  1. int value();   
  2. const int i=value();  

 

dapingguo說:假定對ROM編寫程序時,由于目標代碼的不可改寫,本語句將會無效,不過可以變通一下:

  1. const int &i=value();  

 

只要令i的地址處于ROM之外,即可實現:i通過函數初始化,而其值有不會被修改。

7. 是不是const的常量值一定不可以被修改呢?

觀察以下一段代碼:

  1. const int i=0;   
  2. int *p=(int*)&i;   
  3. p=100;  

 

通過強制類型轉換,將地址賦給變量,再作修改即可以改變const常量值。

8. 請分清數值常量和指針常量,以下聲明頗為玩味:

  1. int ii=0;   
  2. const int i=0; //i是常量,i的值不會被修改   
  3. const int *p1i=&i; //指針p1i所指內容是常量,可以不初始化   
  4. int * const p2i=ⅈ //指針p2i是常量,所指內容可修改   
  5. const int * const p3i=&i; //指針p3i是常量,所指內容也是常量   
  6. p1i=ⅈ //合法   
  7. *p2i=100; //合法  

 

以上幾點都是非常重要的,希望對你有幫助。

【編輯推薦】

  1. C++編譯器如何對Const常量進行分配存儲空間
  2. C++ const變量使用技巧總結
  3. C# const常量詳細介紹
  4. C++中的const限定修飾符
  5. C語言的const關鍵字與指針搭配使用
責任編輯:于鐵 來源: 互聯網
相關推薦

2011-07-20 16:57:05

C++const

2011-07-14 16:56:21

2011-07-14 23:27:05

C++引用

2011-07-14 16:26:01

2011-07-20 10:06:54

CC++const

2009-08-26 17:31:59

C# const常量

2011-07-14 17:17:21

C++指針

2011-07-14 17:02:09

C++指針

2023-09-17 22:50:23

C++編程

2011-07-13 16:49:59

C++

2011-07-20 15:58:53

C++引用

2011-07-20 13:57:06

C++STL

2011-07-15 10:08:11

C++運算符重載

2011-07-20 16:43:34

C++

2017-10-30 16:50:41

Linuxconst

2010-01-19 13:17:05

C++數據類型

2011-06-21 15:00:07

JAVAC++

2011-07-20 13:57:06

C++STL

2011-07-20 14:12:48

2010-01-11 09:56:07

C++編程實例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色三级免费 | 精区3d动漫一品二品精区 | 日本黄色一级视频 | 亚洲综合小视频 | 中文字幕在线观看av | 黄色免费在线网址 | 亚洲精品一区二区三区中文字幕 | 色婷婷综合网站 | 中文字幕乱码一区二区三区 | 在线观看中文字幕亚洲 | 草草精品| 国产色网 | 午夜视频免费在线观看 | 欧美中文字幕一区二区三区 | 亚洲欧美日韩中文字幕一区二区三区 | 日韩精品久久久久 | 99免费精品| 欧美日韩精品久久久免费观看 | a视频在线观看 | 婷婷色婷婷 | 欧美一区永久视频免费观看 | 久久国内精品 | 精品欧美一区二区中文字幕视频 | 国产精品一区二区三 | 精品国产一区二区三区性色av | 天堂中文字幕av | 日韩免费一区 | 国产精品日日摸夜夜添夜夜av | 欧美aaaaaaaa | 亚洲午夜视频 | 91视频a | 亚洲精品白浆高清久久久久久 | 一级片免费观看 | 国产99视频精品免费播放照片 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国内av在线 | 玖玖精品 | 色婷婷久久久亚洲一区二区三区 | 97超碰免费| 中文字幕亚洲一区二区三区 | 天天操夜夜操 |