关于c语言指针的问题。

constint*p;p是指向常量的指针变量,还是指针变量是常量?... const int *p;
p是指向常量的指针变量,还是指针变量是常量?
展开
 我来答
dongyue2008
2010-12-05 · TA获得超过3602个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:576万
展开全部
const int *p这种写法,p是指向const对象的指针。
int * const p这种写法,指针为const,而不是它指向的对象为const。

指向const对象的指针(自以为指向const的指针——语出《C++ Primer》)
怎么写?const double *cptr;
const限定了cptr指向的对象的类型,而并非cptr本身。也就是说,cptr本身并不是const,允许给cptr重新赋值。不能通过cptr的解引用来修改其指向的对象(可以非const)的值。
(1)如果指针指向const对象,则不允许用指针来改变其所指的const值。
(2)把一个const对象的地址赋给一个普通的、非const对象的指针也会导致编译时的错误。
(3)不能使用void*指针保存const对象的地址,而必须使用const void*类型的指针保存const对象的地址。
(4)允许把非const对象的地址赋给指向const对象的指针,此时不能通过指针修改其值的行为都会导致编译时的错误。但是可以通过原变量名来修改其值。不能保证指向const的指针所指对象的值一定不可修改。所以“如果cptr是一个指向const对象的指针,那么*cptr在程序运行期间始终不变”这种说法是错误的。
yerenyo
2010-12-04
知道答主
回答量:69
采纳率:0%
帮助的人:0
展开全部
指向常量的指针变量
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love436053
2010-12-05 · TA获得超过168个赞
知道答主
回答量:123
采纳率:0%
帮助的人:65.4万
展开全部
前一种,指向常量的指针变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ac5fa98
2010-12-05 · TA获得超过227个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:136万
展开全部
指向“常量”的指针变量,不用通过这个指针改变所指的变量的值,可以通过其他方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰蓝焰色C9
2010-12-05 · 超过20用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:46.2万
展开全部
简单点说,要看p是什么,从右像左看,首先看到*,所以p是一个指针,那么p是个什么样的指针呢?再往左看,看到int,所以p是一个指向整形的指针。再往左,看到const,表示这个p所指向的这个整形是只读的,所以,最后得到的是:p是一个指针,它指向的一个只读的整形常量。这意味着p的指向是可以修改的,但是对于它所指向的那个内存里面的值是不能修改的。
如果是这样:const int * const p, 由于 p直接被const修饰,所以p的指向是不能修改的,而且由于int也有const修饰,所以p所指向的那个整形对象也是不能修改的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luster_sun
2010-12-05
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部
指向常量的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式