#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();
}