常量指针和指针常量

// 指针常量和常量指针

//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;
}

posted @ 2012-04-16 13:49  Gentoo  阅读(247)  评论(0编辑  收藏  举报