const和define的区别

C语言中的const变量是只读,有自己的存储空间
C++中的const修饰的是一个真正的常量

  1. 可能有分配存储空间(对const使用了extern或&操作符),可能不会分配存储空间(其他情况)
  2. 当const常量为全局时,并且需要在其他文件中使用时会分配存储空间
  3. 当使用&操作符,取const常量的地址时会分配存储空间
  4. 当const int &a = 10; const修饰引用时,也会分配存储空间
    如下第一个和第二个常整型
    第三个c是一个指向常字符型的指针(所指向内存数据不能被修改,但本身可以修改)
    第四个d 常指针(指针变量不能被修改,但它所指向内存空间可以被修改)
    第五个e指向常字符型的常指针(指针和所指向内存空间均不能被修改)
const int a;  //
int const b; //写法和上面一样
const char *c;
char * const d; 
const char * const  e ;

指针变量和所指向的内存空间变量不是同一个概念,看const放在*的左边还是右边也就是看const修饰指针变量还是修饰所指向的内存空间。

define

#define定义常量,但其没有数据类型
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换,没有类型安全检查,并且在字符替换中可能会出现错误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容