c++ 类型转换中失败

const short* const*short* const* 以及 const short* 都是啥意思呀,亲们

俺声明一个 short* ptr; 该肿么转换?

阅读 3.9k
4 个回答

我来说说简单的const和指针变量搭配的情况,题主有点难懂。
const int * a;int const * a;完全一样,通过这个指针无法改变它所指向的变量的值,即*a = 12是非法的。但可以改变指针指向,即改变指针本身的值,如a = p;。(p是一个合法的指针变量,一般也是int *)
int * const a;无法改变指针指向,及指针本身值,但可以改变指针指向的变量的值

const short* 和 short * ptr是一级指针,可以直接转换;
const short* const* 跟 short* const* 是二级指针了,指向指针的指针;这个转到short* ptr应该没有意义了?

const 是对指针的修饰,表示权限.

如果是常数,那么没有区别。如:
const int a = 3;与int const a = 3是没区别的。
但如果是指针就不同了。
int a = 1;
int const p = &a;
以上的语句,p指向的地址不能改变,但p指向的地址里面的值是可以改变的。比如
p = 2,这样a肚子里的值1就改变成2了。当然p的值也变为2。但不能p = &b;试图想把p指向变量b。
/////////////
int b = 4;
int const *p = &b;
这两条语句与上面的相反。p指向的地址可以改变,但它的值不能直接改变。也就是说可以执行p = &a这样的操作,因为这只是改变p指向的地址。不能执行
p = 2这样的操作,因为这样是直接改变值。

引自http://zhidao.baidu.com/link?url=SEG9mfxLNRlwl7E1C21B7Gc1_z51bGotCrJx6...

从右往左读,距离指针p越近的越代表指针类型,*左边的代表指向对象类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题