您的位置:首页 > 其它

指针常量和常量指针

2015-08-02 18:28 344 查看
这两个概念经常分不清,今天好好总结一下。

一、指针常量

先说指针常量,是因为它和我们常用的数组有关系。

指针常量的声明

[code]int * const p;


指针声明操作符*在常量限定符const前面,叫做指针常量。忽然发现了一点规律^_^。

const限定符修饰的是指针。数组名就是一个指针常量。而数组名和指针有什么区别呢?可以通过引用数组名去修改指向的内存,但是自身不可以被赋值,不可以进行++、–操作。

二、常量指针

常量指针的声明

[code]const int * p1;
int const * p2;


常量限定符const在指针声明操作符*前面,叫做常量指针。

const修饰的是指针指向的内存地址。常量指针和上面的指针常量在赋值行为上相反。自身可以被赋值,支持++、–操作,但是不可以通过指针的引用去修改指向的内存。

总结:记住“数组名就是指针常量”,这个蛋疼的问题就算解决了。

注:

Peter van der Linden写的《expert C programming》在第69页提到const和volatile的优先级:

If a const and/or volatile keyword is next to a type specifier (e.g. int, long, etc.) it applies to the type specifier. Otherwise the const and/or volatile keyword applies to the pointer asterisk on its immediate left.

而徐波前辈翻译时在第64页写到:

如果const和(或)volatile关键字的后面紧跟…

从常量指针的声明可以看出const只要和类型说明符相邻,则const就作用于类型说明符。所以next to在此应译作在…旁边。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: