Const
1.修饰一般变量
一般常量是指简单类型的只读变量。这种只读变量在定义时,修饰符const 可以用在类
型说明符前,也可以用在类型说明符后。例如:
int const i=2; 或const int i=2;
2.修饰数组
定义或说明一个只读数组可采用如下格式:
int const a[5]={1, 2, 3, 4, 5};或
const int a[5]={1, 2, 3, 4, 5};
3.修饰指针
const int *p; // p 可变,p 指向的对象不可变 ,即*p不可变。
int const *p; // p 可变,p 指向的对象不可变。
int *const p; // p 不可变,p 指向的对象可变 ,即*p可变。
const int *const p; //指针p 和p 指向的对象都不可变。
这里给出一个记忆和理解的方法:
先忽略类型名(编译器解析的时候也是忽略类型名),我们看const 离哪个近。”近水楼台先得月”,离谁近就修饰谁。
const int *p; //const 修饰*p,p 是指针,*p 是指针指向的对象,不可变
int const *p; //const修饰*p,p 是指针,*p 是指针指向的对象,不可变
int *const p; //const修饰p,p 不可变,p 指向的对象可变
const int *const p; //前一个const 修饰*p,后一个const 修饰p,指针p 和p 指向的对象
都不可变
4.修饰函数的参数
const 修饰符也可以修饰函数的参数,当不希望这个参数值被函数体内意外改变时使
用。例如:
void Fun(const int i);
告诉编译器i 在函数体中的不能改变,从而防止了使用者的一些无意的或错误的修改。
5.修饰函数的返回值
const 修饰符也可以修饰函数的返回值,返回值不可被改变。例如:
const int Fun (void);
--Thanks to《C语言深度剖析》