const使用详解:http://www.vckbase.com/document/viewdoc/?id=412
我的总结
1.如果cosnt在*左边,则指针指向常量,但指针自身可变。
#include <iostream>
using namespace std;
int main(void)
{
int b = 5;
int *const tmp = &b;
printf("%d/n", *tmp);
(*tmp)++; //此句报错,因为指针指向常量,值不能改变
tmp++; //此句合法,指针值可变
printf("%d/n", *tmp);
return 0;
}
2.如果const在*右边,则指针位常量,指针不能改变,但指针指向的值可变。
#include <iostream>
using namespace std;
int main(void)
{
int b = 5;
int *const tmp = &b;
printf("%d/n", *tmp);
(*tmp)++; //此句合法,指针指向的值可变
tmp++; //此句报错,指针不可变
printf("%d/n", *tmp);
return 0;
}
3.const常量必须在定义的时候初始化
int const a = 3; //合法
//不合法
int cont a;
a = 3;
4.const与类型标识符的位置无关
int const与const int效果相同
5.const指针赋值问题
int const * a = new int;
int *p = a; //错误,int const *a 说明指针指向的值为常量,不能改变;而申明指针的意义是为了对指针指向的值进行改变,所以错误
int *const a = new int;
int *p = a; //正确,理由同上