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常量的處理:
當碰見常量聲明時,在符號表中放入常量;
編譯過程中若發現使用常量則直接以符號表中的值替換;
編譯過程中若發現對const使用了extern或者&操作符,則給對應的常量分配存儲空間(兼容C)
結論:C語言中的const常量:
C語言中的const變量是隻讀變量,有自己的存儲空間
C++中的const常量:
可能分配空間,也可能不分配空間
分配內存空間的情況:
當const常量爲全局,並且需要在其他文件中使用
當使用&操作符取const常量的地址
3、const與#define的不同之處