C++中const的簡(jiǎn)單用法

C++是C語(yǔ)言的繼承,它既可以進(jìn)行C語(yǔ)言的過(guò)程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。C++擅長(zhǎng)面向?qū)ο蟪绦蛟O(shè)計(jì)的同時(shí),還可以進(jìn)行基于過(guò)程的程序設(shè)計(jì),因而C++就適應(yīng)的問(wèn)題規(guī)模而論,大小由之
一、符號(hào)常量的聲明

常量聲明的語(yǔ)句的形式:  const + 數(shù)據(jù)類型說(shuō)明符 + 常量名 = 常量值

冠縣網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

      數(shù)據(jù)類型說(shuō)明符 + const + 常量名 = 常量值  

 注意:   符號(hào)常量在聲明時(shí)一定要賦初值,且在程序中不能改變其值?!        ?/p>

       const float PI = 3.14159;                   //下面則是錯(cuò)誤的聲明                   const float PI;                    PI = 3.14159;

二、const* 和 *const 的區(qū)分

目前了解的形式

例如:

 const int *p (int const *p)
        int *const p
        const int* const p

 1.const int *p (int const *p) 的意義

二者表達(dá)的意思一致,即 *p 是個(gè) const ,不能通過(guò) *p 修改 p 的指向,所以也可以叫它為只讀型指針

由于是將指向的數(shù)據(jù)視為常量,定義的時(shí)候可以不用初始化

 1.   int a = 0;     
    const int* p;     
    p = &a;     
    *p = 2; //錯(cuò)誤,不能通過(guò)*p 修改值   
   2.   int a = 0;      
       const int* p = &a;      
       a = 1;      
       cout< < *p << endl; //此時(shí)p指向的值可以改變,打印出來(lái)為 1    
   3.   int a= 0,b = 1;      
     const int* p = &a;      
      cout< < *p << endl; //*p 值為 0      
      p = &b;      
     cout << *p << endl; //*p 值為 1

  2. int* const p 的意義

該定義將 p 視為一個(gè)const常量,所以定義時(shí)就要初始化,且p 指向的位置不能改變,所以也可以叫它指針常量

1.  int a = 0,b =1;
    int* const p = &a;
    p = &b;    //錯(cuò)誤,p 的指向已不能改變
2.  int a = 0, b = 1;
    int* const p = &a;
    *p = b;
    cout < < *p << endl; //*p 為 1
3.  int a = 0, b = 1;
    int*const p = &a;
    a = b;
    cout < < *p << endl; //*p 為 1

(const int* p 與 int* const p 與 const int* const p 的區(qū)別)

const int* p 表示把 p 指向的變量看成常量

int* const p 表示把 p 自己定義為常量,所以定義時(shí)就要初始化

const int* const p 表示 p、*p 都是常量,即 p 的指向不能改變,也不能通過(guò) *p 改變 p 指向的值

有個(gè)評(píng)論講的很有意思,share一下:

看"effective c++"第三條講到:
只需要判斷const是在 * 的左邊還是右邊即可。
左邊則是修飾被指物,即被指物是常量,不可以修改它的值;
右邊則是修飾指針,即指針是常量,不可以修改它的指向;
在左右兩邊,則被指物和指針都是常量,都不可以修改。

int c = 3;
int a = 2;
int b = 1;
//const出現(xiàn)在*左邊,則被指物是常量
const int * pi = &a;
*pi = b;//不正確 被指物是常量
pi = &c; //正確 
 //const 出現(xiàn)在* 右邊,則指針是常量
int * const p = &a;
p = &c;//不正確,指針是常量
*p = c;//正確
//const出現(xiàn)在*左右兩邊,則被指物和指針都是常量
const int * const ptr = &a;
ptr = &c;//不正確,指針是常量
*ptr = c;//不正確,被指物是常量

注意事項(xiàng) !

1.如果有const int a = 0; 那么必須是 const int* 才能指向 a,像 int* p =&a; 是非法的
2.const int a =10;
  int* p =&a; // 錯(cuò)誤,這是不能取地址的,否則有修改值的能力

原文地址: https://www.linuxprobe.com/c-const-use.html

分享標(biāo)題:C++中const的簡(jiǎn)單用法
本文來(lái)源:http://bm7419.com/article40/jdeoeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站品牌網(wǎng)站設(shè)計(jì)、軟件開(kāi)發(fā)、品牌網(wǎng)站制作、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化