1. 指向const指针
const int* u;//u是一个指针,它指向一个const int, 它所指的值是不能改变的。
还可以定义为int const * v; 但第一种定义更加规范
const int *u;
int j = 1;
u = &j;
*u = 9;//编译期间错误,指向一个const int ,其值是不能被修改的
int k =2;
u = &k;//编译期间没有错误,指针本身是可以改变的
2. const 指针
int d =1;
int * const w = &d; // w是一个指针,这个指针是指向int的const指针,指针本身现在是const指针,编译器要求给它一个初始值,这个值在指针生命期间内不变,然而可以改变它所指向的值
*w=2//编译期间没有错误,指向的内容是可以改变的
w = &j;//编译期间错误,是一个const指针,指针是不能改变的
3. 一个const指针指向一个const对象
int d =1;
const int * const x = &d;
int const * const x2 = &d;
指针本身和指针指向的内容都不可以修改
4. 传递const值
void f1(const int i)
{
i++//编译期间发生错误
}
void f2(int ic)
{
const int /& i = ic;
i++; //编译期间发生错误
}
5. 返回const值
const int f4(){return 1;}
6 传递和返回地址
const char * v()
{
char * p ="dddd";
return p;
}
调用:
const char * p = v();
cout<<p<<endl;
int * const getConstPoint()
{
static int i=44;
return &i;
}
const int * getConstPoint1()
{
static int i=44;
return &i;
}
调用:
int * const p1 = getConstPoint();
const int * p2 = getConstPoint1();