常量指针和指针常量
// 指针常量和常量指针
//1)指针常量可以通过指针改变变量的值
Int x =2;
Int *const point =&x;
*point =4; //now x = 4
void main()
{
char*const str ="china";
*str ="yangzhou"; // right 可以修改字符串的内容
str ="another"; // wrong
}
//2)常量指针不可以
Int x =2;
Const int* point =&x;
*point =4; // wrong
void main()
{
constchar* str ="china";
*str ="yangzhou"; // wrong
str ="another"; // right 修改指针指向另一个字符串
}
//3)上面两个例子看起来头疼吧,教你一个好方法;
//指针常量中,const用来修饰str,故str不能改变;
//常量指针中,const用来修饰*str,故*str不能改变。
//4)两种方法的组合,使地址和内容都无法改变
void main()
{
constchar*const str ="china";
*str ="yangzhou"; //wrong
str ="another"; //wrong
}
//5)const修饰“引用”,使“引用”不可修改。
void main()
{
int x =20;
constint&rx = x;
rx =2000; //wrong
}
//6)声明函数时若在末尾加const,表示在该成员函数内不得改变类变量
class myclass
{
char* str;
myclass()
{
str =newchar[64];
}
~myclass()
{}
char fun(char nstr) const
{
str ="china";//wrong
return str;
}
}
//7)数据传递给函数的方式默认是值传递,但如果一个函数被调用的次数过多,那就会
//产生很多个拷贝,造成效率不高,故我们可以使用“引用”,但“引用”带来的隐患是它可
//能修改变量的值,为此,我们可以使用“const引用”,使“引用”不可修改
int ReturnInt(constint&);
void main()
{
int i=10;
ReturnInt(i);
}
int ReturnInt(constint&nInt)
{
nInt++;//wrong
return nInt;
}