1 const基本用法
void func()
{
const int a=1;
int const b=2; // 一样的
const int * c;// const 修饰的是指针c所指向的内存空间,不能修改
int* const d;// const 修饰的是指针变量本身不能被改变
const int* const e;// 两者均不能修改
}
2. const 变量在C语言和C++语言中的区别:
void func()
{
const int a=15;
int* p=NULL;
p = (int*)&a;
*p = 35;
printf("a = %d;\n",a); // C语言中,输出值为:35
// C++中,输出值为:15
printf("*p = %d;\n",*p); // C语言中,输出值为:35
// C++中,输出值为:35,单独开辟了内存空间
}
3.const 和 #define 的异同
相同之处:
#define a 10
void func()
{
const b = 20;
int arry[a+b];// 编译正确
}
不同之处:
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换
void fun1()
{
#define a 10 // 可通过#undef 卸载宏定义
const int b = 20;
//#undef a # undef // #undef a 卸载宏a; #undef 卸载所有宏定义
}
void fun2()
{
printf("a = %d\n", a);// 在使用 #undef a后 a变量无法使用;
//printf("b = %d\n", b);
}
int main()
{
fun1();
fun2();
return 0;
}