const定義的只讀變量在程序運行過程中只有一份拷貝(因為它是全局的只讀變量,存放在靜態區),而#define定義的宏常量在內存中有若干個拷貝。
define用法。?
#define宏是在預編譯階段進行替換,而const修飾的只讀變量是在編譯的時候確定其值。
?
#define宏沒有類型,而const修飾的只讀變量具有特定的類型
?
===========================================
const int *p;?? //p可變,p指向的對象不可變
int const*p;? //p可變,p指向的對象不可變
int *const p;? //p不可變,p指向的對象可變
const int *const p;? //指針p和p指向的對象都不可變
?
這里給出一個記憶和理解的方法:
先忽略類型名(編譯器解析的時候也是忽略類型名),我們看const離哪個近。"近水樓臺先得月",離誰近就修飾誰。
判斷時忽略括號中的類型
?
const (int) *p;?? //const修飾*p,*p是指針指向的對象,不可變
(int) const *p;? //const修飾*p,*p是指針指向的對象,不可變
(int)*const p;?? //const修飾p,p不可變,p指向的對象可變
const (int) *const p;? //前一個const修飾*p,后一個const修飾p,指針p和p指向的對象都不可變
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态