const基礎const符號表機制&&const和#define的對比

1、const基礎知識(用法、含義、好處)

 ⑴初級理解:const是定義常量==》意味着只讀

#include <iostream>

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

int operatorTeacher01(const Teacher *pT)
{
    pT->age = 10;//這是錯誤的,原因:指針所指向的內存空間不可以被修改
    return 0;
}

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



int main()
{
    const int a;
    int const a;//  第一個第二個意思一樣 代表一個整形數
    
    const int *c;//c 是一個指向常整形數的指針(所指向的內存不能被修改,但是本身可以修改)
    
    int  * const d;// d 是常指針(指針變量不能被修改,但是它所指向的內存空間可以被修改)
    
    const int * const e;//一個指向常整形的常指針(指針和它所指向的內存空間均不能被修改)
    
    
    return 0;
}

⑵好處:

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

              ②清楚的分清參數的輸入和輸出特性


2.const的符號表機制

  

  C++編譯器對const常量的處理:

    當碰見常量聲明時,在符號表中放入常量;

   wKiom1h-zeein5j2AAD5p8RAxVw692.png-wh_50

    編譯過程中若發現使用常量則直接以符號表中的值替換;

   編譯過程中若發現對const使用了extern或者&操作符,則給對應的常量分配存儲空間(兼容C)


結論:C語言中的const常量:

       C語言中的const變量是隻讀變量,有自己的存儲空間

    C++中的const常量:

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

      分配內存空間的情況:

       當const常量爲全局,並且需要在其他文件中使用

       當使用&操作符取const常量的地址

3、const與#define的不同之處

 wKiom1h-1QSjlSS4AALINcwYs98301.png-wh_50



  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章