const和define的区别

2020-05-19  本文已影响0人  潘雪雯

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常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换,没有类型安全检查,并且在字符替换中可能会出现错误。

上一篇 下一篇

猜你喜欢

热点阅读