CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

一道怪试题

楼主cqgaoke(技高软件公司)2006-10-18 00:20:18 在 C/C++ / C++ 语言 提问

const   long   *p   =   &b;   p   =   &a;   *p   =   10;。这里p   =   &a;按照类型匹配很正常,而p是常量的long类型的指针,没有任何问题。但是*p   =   10;将报错,这是为什么? 问题点数:20、回复次数:28Top

1 楼h60009493()回复于 2006-10-18 00:32:14 得分 0

const   long   *p                      
  指向的内容是常量,   不得更改,   但指针的指向可以更改(即可以指向其它常量).  
  指针可以改变指向,但指向的内容不能够改变  
   
  *p   =   10  
  这里10是个常量,*p指向的是一个常量,这里当然不能够赋值.Top

2 楼FaKeChineseCompany()回复于 2006-10-18 00:36:11 得分 0

晕死呀,这种基础语法问题你也叫怪呀?  
  const   long   *p;   //这个p表示它所指的对象是const的,也就是不能给它所指的对象赋值,  
                                //*p=10;   就是给p所指的对象赋值,无怪乎编译器会报错了,  
                                //就是说,p   的值是可以改变的,但*p   的值是不可改变的Top

3 楼ckt1120(坏人一个,切勿联系)回复于 2006-10-18 07:48:18 得分 0

cosnt   long   *p  
  long*   const   p  
  是不一样的,前面cosnt修饰的是*p,则*p的值不能被修改.  
  所以p   =   10;企图修改*p的值是错误的.  
  如果是long*   const   p,则p的值不能被修改,即p指向的地址不能改变.  
  而*p的值可以被修改.Top

4 楼gloomy_you()回复于 2006-10-18 08:23:51 得分 0

支持ls!Top

5 楼wanglovec(阳光飞舞)回复于 2006-10-18 13:34:16 得分 0

LS   de   LS   正解Top

6 楼wanfustudio(雁南飞:知识之败,慕虚名而不务潜修也)回复于 2006-10-18 13:52:08 得分 0

涉及到const的可以把类型去掉  
  靠哪个就修饰哪个Top

7 楼seraphimpk(无可救药)回复于 2006-10-18 18:00:46 得分 0

大家说的很有道理,那小弟有点不明白了:  
  const   long   *p   =   &b;   p   =   &a;   *p   =   10;  
   
  虽然  
  指向的内容是常量,   不得更改,   但指针的指向可以更改(即可以指向其它常量).  
  指针可以改变指向,但指向的内容不能够改变  
   
  但是  
  p=&a表明指针改变了指向,那么为什么这个时候还不能*p   =   10呢?Top

8 楼FaKeChineseCompany()回复于 2006-10-18 19:01:33 得分 0

再装B我就往脸上踢了……Top

9 楼lw1a2(一刀 现在改六点下班了:()回复于 2006-10-18 19:11:56 得分 0

-_-!Top

10 楼erwa(二娃)回复于 2006-10-18 19:46:14 得分 0

h60009493()   (   )   信誉:100         Blog     2006-10-18   0:32:15     得分:   0      
     
     
         
  const   long   *p                      
  指向的内容是常量,   不得更改,   但指针的指向可以更改(即可以指向其它常量).  
  指针可以改变指向,但指向的内容不能够改变  
   
  *p   =   10  
  这里10是个常量,*p指向的是一个常量,这里当然不能够赋值.  
   
       
     
  Top

11 楼chenxiaohong3905(啊陈)回复于 2006-10-18 19:58:51 得分 0

指向常量的指针和常量指针是不一样的。Top

12 楼runnerterry()回复于 2006-10-18 20:20:56 得分 0

const   long   *p;                  
  指向的内容是常量,   不得更改,   但指针的指向可以更改(即可以指向其它常量).  
  指针可以改变指向,但指向的内容不能够改变  
  *p   =   10  
  这里10是个常量,*p指向的是一个常量,这里当然不能够赋值.  
  ------------------------------------------------------------  
  const   long*   p;//p值(地址)可更改,p(地址)指向的变量不能更改。  
   
   
   
  cosnt   long   *p  
  long*   const   p  
  是不一样的,前面cosnt修饰的是*p,则*p的值不能被修改.  
  所以p   =   10;企图修改*p的值是错误的.  
  如果是long*   const   p,则p的值不能被修改,即p指向的地址不能改变.  
  而*p的值可以被修改.  
  ------------------------------------------------------------  
  long*   const   p=&a;//p值(地址)不能更改,p(地址)指向的变量a可更改。Top

13 楼awperpvip(挖靠我狂晕来CSDN这么久,竟不知道原来名字可以这么长)回复于 2006-10-18 22:49:16 得分 0

无语了…Top

14 楼skukustar(以黑暗之名の毁灭)回复于 2006-10-19 08:52:52 得分 0

这里的   const说明其修饰的为常引用,常引用所引用的对象不   能被更新,如果用常引用做形参,便不会发生对实参意外的更改Top

15 楼blackmailer()回复于 2006-10-19 08:58:42 得分 0

这个问题确实很基础啊Top

16 楼wave_()回复于 2006-10-19 09:03:27 得分 0

基础问题Top

17 楼bingo80()回复于 2006-10-19 09:19:25 得分 0

quite   basisTop

18 楼mekiss(浪青)回复于 2006-10-19 11:06:20 得分 0

*P是常量不能付值Top

19 楼wangdhxy2(流浪的风)回复于 2006-10-19 11:34:22 得分 0

支持   FaKeChineseCompany()   、ckt1120(DeClothes-Mavin)   这两位解释的很清楚Top

20 楼xuqing1980()回复于 2006-10-19 11:50:38 得分 0

long   *   const   p;//常量指针,p的值不可以修改  
  long   const   *p;   //指向常量的指针,指向的常量值不可以修改  
  const   long   *p;   //和long   const   *p一样  
   
  常量是放在常量区,指针是在栈区,各管个的,你当然可以改变指针的指向喽,但是不能区修改常量区里面的数据!Top

21 楼Super_007AtChina()回复于 2006-10-19 13:15:43 得分 0

呵呵,新手,鼓励!Top

22 楼lulab()回复于 2006-10-19 13:21:07 得分 0

加油加油Top

23 楼djsky1234()回复于 2006-10-19 14:10:37 得分 0

const       //不能给常量赋值。。Top

24 楼swimmer2000(时间是用来浪费的,所以每当我做了一点事都觉得很自豪)回复于 2006-10-20 15:37:17 得分 0

多看书,多思考,多问.Top

25 楼cqgaoke(技高软件公司)回复于 2006-10-22 19:38:50 得分 0

const不能赋值,那要初始化呀.Top

26 楼anrui32(命令提示符(anrui32@163.com))回复于 2006-10-22 20:19:50 得分 0

常量只能初始话一次Top

27 楼gurongrong03()回复于 2006-10-22 20:53:07 得分 0

一个是地址,一个是值嘛,  
  显然不同的Top

28 楼zhejiang9(麻花!大花裤衩!)回复于 2006-10-22 20:58:50 得分 0

....,多看看基础的书,就不会怪了!:)Top

相关问题

关键词

得分解答快速导航

  • 帖主:cqgaoke

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo