溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

const基礎(chǔ)const符號(hào)表機(jī)制&&const和#define的對(duì)比

發(fā)布時(shí)間:2020-07-26 21:24:58 來(lái)源:網(wǎng)絡(luò) 閱讀:585 作者:泉奕 欄目:編程語(yǔ)言

1、const基礎(chǔ)知識(shí)(用法、含義、好處)

 ⑴初級(jí)理解:const是定義常量==》意味著只讀

#include <iostream>

struct Teacher
{
    char name[64];
    int age;
}

int operatorTeacher01(const Teacher *pT)
{
    pT->age = 10;//這是錯(cuò)誤的,原因:指針?biāo)赶虻膬?nèi)存空間不可以被修改
    return 0;
}

int operatorTeacher02(Teacher * const pT)
{
    pT->age = 10;//這是正確的
    pT = NULL;//這是錯(cuò)誤的,原因:指針變量本身不能被修改
    return 0;
}



int main()
{
    const int a;
    int const a;//  第一個(gè)第二個(gè)意思一樣 代表一個(gè)×××數(shù)
    
    const int *c;//c 是一個(gè)指向?!痢痢翑?shù)的指針(所指向的內(nèi)存不能被修改,但是本身可以修改)
    
    int  * const d;// d 是常指針(指針變量不能被修改,但是它所指向的內(nèi)存空間可以被修改)
    
    const int * const e;//一個(gè)指向?!痢痢恋某V羔槪ㄖ羔樅退赶虻膬?nèi)存空間均不能被修改)
    
    
    return 0;
}

⑵好處:

   合理的利用const:①指針做函數(shù)參數(shù),可以有效的提高代碼的可讀性,減少bug

              ②清楚的分清參數(shù)的輸入和輸出特性


2.const的符號(hào)表機(jī)制

  

  C++編譯器對(duì)const常量的處理:

    當(dāng)碰見(jiàn)常量聲明時(shí),在符號(hào)表中放入常量;

   const基礎(chǔ)const符號(hào)表機(jī)制&&const和#define的對(duì)比

    編譯過(guò)程中若發(fā)現(xiàn)使用常量則直接以符號(hào)表中的值替換;

   編譯過(guò)程中若發(fā)現(xiàn)對(duì)const使用了extern或者&操作符,則給對(duì)應(yīng)的常量分配存儲(chǔ)空間(兼容C)


結(jié)論:C語(yǔ)言中的const常量:

       C語(yǔ)言中的const變量是只讀變量,有自己的存儲(chǔ)空間

    C++中的const常量:

       可能分配空間,也可能不分配空間

      分配內(nèi)存空間的情況:

       當(dāng)const常量為全局,并且需要在其他文件中使用

       當(dāng)使用&操作符取const常量的地址

3、const與#define的不同之處

 const基礎(chǔ)const符號(hào)表機(jī)制&&const和#define的對(duì)比



  



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI