const short* const*
跟 short* const*
以及 const short*
都是啥意思呀,亲们
俺声明一个 short* ptr;
该肿么转换?
const short* const*
跟 short* const*
以及 const short*
都是啥意思呀,亲们
俺声明一个 short* ptr;
该肿么转换?
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...
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
我来说说简单的
const
和指针变量搭配的情况,题主有点难懂。const int * a;
和int const * a;
完全一样,通过这个指针无法改变它所指向的变量的值,即*a = 12
是非法的。但可以改变指针指向,即改变指针本身的值,如a = p;
。(p
是一个合法的指针变量,一般也是int *
)int * const a;
无法改变指针指向,及指针本身值,但可以改变指针指向的变量的值