c++ 类型转换中失败


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

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

C++

hcd123 10 years, 2 months ago

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...

深海的杯具 answered 10 years, 2 months ago

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

MinHoo answered 10 years, 2 months ago

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

超级无敌大烤鸭 answered 10 years, 2 months ago

Your Answer