成人免费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技術棧公眾號

主站蜘蛛池模板: 老司机成人在线 | 欧美大片久久久 | 日日夜夜天天 | 欧美精品一区在线发布 | 欧美精品一区二区三区在线播放 | 特黄毛片 | 久久av一区二区 | 999久久| 9久久婷婷国产综合精品性色 | 午夜影晥 | 日本不卡免费新一二三区 | 亚洲国产精品久久久久久 | 久久精品国产清自在天天线 | 暖暖成人免费视频 | 亚洲视频自拍 | 久久精品aaa | 观看av | 911影院| 久久天天躁狠狠躁夜夜躁2014 | 欧美电影免费观看 | 国产在线成人 | 在线小视频 | 亚洲一区二区三区久久 | 中文字幕高清 | 国产98色在线 | 日韩 | 91视频播放 | www.男人天堂.com | 欧美一区在线视频 | 精品一区二区三区入口 | av免费观看网站 | 国产视频一区二区 | 特级丰满少妇一级aaaa爱毛片 | 精品亚洲一区二区三区四区五区 | 亚洲国产精品久久 | 全部免费毛片在线播放网站 | 天堂成人国产精品一区 | 国产精品久久久久无码av | 中文字幕乱码视频32 | 啪啪免费| 日韩国产精品一区二区三区 | 欧美日韩不卡合集视频 |