日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++基礎(chǔ)詳細(xì)介紹const的用法

const可以用來(lái)定義常量,t定義時(shí),定義了常量的類型,所以更精確一些。

10年積累的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有隨縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

面向?qū)ο笫荂++的重要特性. 但是c++在c的基礎(chǔ)上新增加的幾點(diǎn)優(yōu)化也是很耀眼的。就const直接可以取代c中的#define 。以下幾點(diǎn)很重要,學(xué)不好后果也也很嚴(yán)重 。

const

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

 
 
 
  1. const int i=5;   
  2. int j=0;   
  3. ...   
  4. i=j; //非法,導(dǎo)致編譯錯(cuò)誤   
  5. j=i; //合法  

 

2. 必須初始化

 
 
 
  1. const int i=5; //合法   
  2. const int j; //非法,導(dǎo)致編譯錯(cuò)誤  

 

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

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

 

4. 便于進(jìn)行類型檢查

用const方法可以使編譯器對(duì)處理內(nèi)容有更多了解。

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

 

5. 可以避免不必要的內(nèi)存分配

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

 

由于const定義常量從匯編的角度來(lái)看,只是給出了對(duì)應(yīng)的內(nèi)存地址,而不是象#define一樣給出的是立即數(shù),所以,const定義的常量在程序運(yùn)行過(guò)程中只有一份拷貝,而#define定義的常量在內(nèi)存中有若干個(gè)拷貝。

6. 可以通過(guò)函數(shù)對(duì)常量進(jìn)行初始化

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

 

dapingguo說(shuō):假定對(duì)ROM編寫程序時(shí),由于目標(biāo)代碼的不可改寫,本語(yǔ)句將會(huì)無(wú)效,不過(guò)可以變通一下:

 
 
 
  1. const int &i=value();  

 

只要令i的地址處于ROM之外,即可實(shí)現(xiàn):i通過(guò)函數(shù)初始化,而其值有不會(huì)被修改。

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

觀察以下一段代碼:

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

 

通過(guò)強(qiáng)制類型轉(zhuǎn)換,將地址賦給變量,再作修改即可以改變const常量值。

8. 請(qǐng)分清數(shù)值常量和指針常量,以下聲明頗為玩味:

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

 

以上幾點(diǎn)都是非常重要的,希望對(duì)你有幫助。


本文標(biāo)題:C++基礎(chǔ)詳細(xì)介紹const的用法
鏈接URL:http://www.5511xx.com/article/cohhssj.html