C和指针之const、#define、volatile

举报
chenyu 发表于 2021/07/26 23:10:58 2021/07/26
【摘要】 1、const    定义const 只读变量,具有不可变形 const int a = 100;   编译器通常不为普通Const只读变量分配存储空间, 而是将它们保存在符号表中,   这使得它成为一个编译期间的值,没有了存储与读内存操作,使用效率很高 #define M3 //宏常量 const int N...

1、const 

 

定义const 只读变量,具有不可变形

const int a = 100;
 

  编译器通常不为普通Const只读变量分配存储空间, 而是将它们保存在符号表中,
  这使得它成为一个编译期间的值,没有了存储与读内存操作,使用效率很高


  
  1. #define M3 //宏常量
  2. const int N = 5; //此时并没有将N放入内存中
  3. int i = N; // 此时为N分配了内存,以后不再分配内存
  4. int I = M; // 预编译期间进行宏替换,分配内存
  5. int J = N; // 没有内存分配
  6. intJ = M //再次进行宏替换,有一次分配内存

 


  
  1. const int *p; //p可变,p指向的对象不可变
  2. int const *p; //p可变,p指向的对象不可变
  3. int *const p; //p不可以变,p指向的对象可变
  4. const int *const p; //p不可以变,p指向的对象不可变

 

 

 const和#define区别

   1、const 给出了对应的内存地址,不像#define一样给出的是立即数,const定义的只读变量在程序的运行中只有一份拷贝,(因为它是全局的只读变量,存放在静态区

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/78440635

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。