4、const 和#define 相同之处和不同之处

#include<iostream>
using namespace std;
/**
 * @brief main
 * @return
 * const 修饰的时候是在编译的时候分配内存。
 */
int mainb(){
    int    a=200;
    const  int b=100;
    int c=300;
    cout<<&a<<" "<<&b<<" "<<&c<<endl;
}
/**
 * @brief main
 * @return
 * #define 和 const 区别?
 * #define 是在编译预处理阶段执行。
 * 而 const 表示的是由编译器处理,提供类型检查,和作用域检查。
 */
int mainc(){
    int    a=200;
    int  b=20;
   // int c[a+b]; //这个是在linux 内核中可以编译通过,在c++和c 中不可以通过、
    const  int  d=30;
    #define    e  10
    int  g[d+e];  //const 和 #define 都可以使用。
}
void  f1(){
   #define   a  10
   const   int  b=20;
   #undef  a   //表示的是作用域在这个函数中。
}

void  f2(){
   cout<<a<<endl;
}
/**
 * @brief main
 * @return
 * 1、总结:
 * 1.const 在c 语言中是一个只都变量。有自己的存储空间。
 * 2.在c++中可以分配存储空间,也可能不分配存储空间。
 * 2、在c++中,可能分配内存空间,也有可能不分配内存空间。
 *  当const 作为 全局变量。供其他文件使用的时候分配内存。
 *  当使用取地址符号的时候取const 常量地址的时候,会分配内存空间。int *p=(int *)&a; 会给 a分配一个内存空间,并且p指向这个内存空间。
 *  其余的时候const 是被存储在 符号表中,不会分配内存空间。
 */

int  main(){

  f1();
  f2();

}

猜你喜欢

转载自blog.csdn.net/qq_30272539/article/details/81383093