1.const 修饰成员变量
int main()
{
int a1=3;
const int a2=a1; // a2 不可以修改
int * a3 = &a1;
const int * a4 = &a1; // (*a4)++ 不可以,a4++ 可以
int * const a5 = &a1; // (*a5)++ 不可以,a5++ 可以
// a5和上面的a4表示一样
int const * const a6 = &a1; ///(*a6)++,a6++ 都不可以
const int * const a7 = &a1; ///(*a7)++,a7++ 都不可以
return 0;
}
const修饰指针变量时:
只有一个const时
如果const 位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,指针可以修改,即可以指向其他的内存单元。如果const位于*右侧,表示指针本身是常量,不能指向其他内存地址;但是指针所指的数据可以通过解引用修改。
两个const
即 “ * ” 左右各一个,则表示指针和指针所指数据都不能修改。
2.const修饰函数参数
表示传递过来的参数在函数内不可以改变,与上面修饰变量时的性质相同。
eg:
void func(const int len)
{
len = 5; // 编译出错
}
程序中当我们调用这个函数时,编译会出错。