首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教int *p = (int *)&x是什么意思

2012-03-11 
请问int *p (int *)&x是什么意思?classA{public:intxvoidf()const{int*p(int*)&x//这里(int*)&x什么

请问int *p = (int *)&x是什么意思?
class   A
{
  public:
  int   x;
  void   f()   const
  {
      int   *p   =(int   *)&x;//这里(int   *)&x什么意思呢?   它与int   *p=&x;   有什么区别?
    //   int   *p   =   &x;
    (*p)++;
    cout < <   x   < <endl;
  }
};
上面定义的这个类中的const函数f()可以通过   int   *p=(int   *)&x;来修改x的值,我不明白(int   *)&x的含义,而且它与int   *p=&x有什么区别?   当我改为int   *p=&x   时就出现编译错误   "cannot   convert   from   'const   int   *__w64   '   to   'int   * '   "


[解决办法]
这是因为在const成员函数f()里面,要保证成员变量不被修改,所以系统自动为x加上了const修饰,即x现在相当于const int x,所以现在&x相当于const int*类型,这时用int*p=const int*当然是错的.因此该题目中用(int*)&x把&x的类型强制转换成了int *类型,来保证用int *p能接收
[解决办法]
强制性类型转换 常量转化成非常量一般用 const_cast <int *> (&x)更合适

热点排行