const int* p 和 int* const p

理清一下,顺便做下记录。

(一) const int* p



由程序可知,const int* p 中const的作用是告诉指针,指向的对象是const(但其实对象自己是不是const不清楚),不能通过指针来改变对象的值;但是指针重新指向另一个地方可以。



(二) int* const p



由程序可知,int* const p const的作用是限定p的,p的值是指向对象的地址,表示p的值是const的,不能指向其他地方了;但是可以通过*p来改变指向的对象值

区分这两种情况,看const 后紧跟的是什么,就是限定的什么

const int* p中const后面是int, 表示指向的值是常量,不能通过该指针改变。

int* const p中const后面是p,表示该指针所存的地址不能变了,不能重新指向其他了。


暂时的理解就这样,希望自己以后看的时候能懂

o(╯□╰)o


-------------------------------------------------------------------------------

2017年4月24日

引用《C专家编程》1.9节一段话:

const 和 * 的组合通常只用于在数组形式的参数中模拟传值调用。它声称“我给你一个指向它的指针,但你不能修改它。” 这个约定类似于极为常见的void*的用法,尽管在理论上它可以用于任何情形,但通常被限制于把指针从一种类型转换为另一种类型。


-----------------------------------------------------------------------------

《Effective C++》条款三中写道:

const语法虽然变化多端,但并不莫测高深。如果关键字const出现在星号左侧,表示被指物是常亮;如果出现在星号右侧,表示指针自身是常亮;如果出现在星号两边,表示被指物和指针两者都是常亮。

如果被指物是常亮,有些程序员会将关键字const写在类型之前,有些人会把它写在类型之后、星号之前。两种写法的意义相同。

猜你喜欢

转载自blog.csdn.net/huakaitingqian/article/details/48175199