define用法,const與#define宏定義的區別——C語言深度剖析

 2023-10-07 阅读 21 评论 0

摘要:const定義的只讀變量在程序運行過程中只有一份拷貝(因為它是全局的只讀變量,存放在靜態區),而#define定義的宏常量在內存中有若干個拷貝。 define用法。? #define宏是在預編譯階段進行替換,而const修飾的只讀變量是在編譯的時候確定其值。 ? #define宏沒

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指向的對象都不可變

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/128245.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息