1)const 修饰全局变量:(倘若定义的全局变量值不需改变,用const来修饰是个好的习惯)
例如:
const int value =1;//也可以写成int const value =1;形式
同样,也可以是使用define
例如:
#define VALUE 1
//相较于使用define,const的优势在于,编译器并不为const 常量分配存储空间,而是将其保存在符号表中,故没有存储和读内存的操作,提高了效率;const修饰的量有数据类型,可以对const进行类型安全检查;
//相较于使用const的优势,#define可以对类型进行封装,使用起来更灵活
例如:
#define MYINT int
还有第三种形式,就是使用枚举类型:
例如:
enum open_code{ value =1};//这种形式等价于 const int value =1;
2)const修饰局部变量:
例如:
int func()
{
const int value=1;
}
3)const修饰指针变量:
a.指针常量
例如:
char* const ch; //const修饰ch,故ch指针不能再指向别处,例如ch++;(错误)
b.常量指针
例如:
const char* ch; //const修饰*ch,故*ch不能再变化,例如*ch++;(错误)
4)const 在函数参数中使用
例1:
int func(const char* ch)
{
}
//*ch 的作用域在函数内部,故*ch的内容不会被改变,即实参的内容不会被改变;此时const的作用,就是保证实参不会被函数内改变值。
例2:
int func(char* const ch)
{
}
//同例1类似,ch是指针,此时ch++;是不允许的,即在函数内部指针不会重新指向新的变量,对于实参来说,实参指针也不会重新指向新的变量;
5) const修饰函数返回值
例如:
const char* func()
{
return ch;
}
const char* type =func();//此时必须要添加const,因为函数的返回值是个const
注意:一个常量只能赋给一个常量;例如5)中的形式
但是一个变量却可以赋给一个常量;例如4)中函数的实参可以是常量:
形如:
char* str =”hello world”;
func(str);
总结:const 使用是为了使错误在编译的时候就被发现,而不至于等到程序执行时发生意想不到的错误。