| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 532 人关注过本帖
标题:常量与指针的困惑
只看楼主 加入收藏
梦米奇
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2013-7-12
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:4 
常量与指针的困惑
const int *x;
int *const x;

请问这两个的区别是在哪里?  那个需要初始化那个不能更改?  我有点乱了。
2013-07-12 23:20
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:5 
const int *x;与int *const x;的区别是:前者指向的内容不可改变。后者指针不能再指向其它的东西了。int *const x必须在定义是初始化,而const int *x可以在定义后另外写一行代码来初始化

思考赐予新生,时间在于定义
2013-07-13 00:09
qq525273446
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:54
专家分:161
注 册:2009-11-18
收藏
得分:5 
const int *x;  //const修饰的是后面全部  => *x不能改  x可改  
int *const x;  //const修饰的是x  =>  *x可改  x不可改
其实const修饰的变量时可改的  只是不能作左值


找工作中……
2013-07-13 00:11
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:10 
还是把所有的情况给楼主列出来吧!希望对你有用!
1、类型:const char* p;
表示p指向const类型的对象(其实也可以指向非const对象,但是反过来非const指针不能指向const对象,原因很简单我定义一个类型就是不 想他的值,倘若让一个非const指针可以指向他那么岂不是可以通过这个指针修改它的值了?),根本目的在于为了不可以通过p改变p所指对象的值例如:
int i=0,j=0;
const int *pi=&i;//这里就是const指针指向非const对象
i=2;//ok i是非const 值可以改变
*pi=3;//错误pi是指向const对象的指针不可通过它改变指向对象的值
pi=&j;//ok,p是指向const类型的指针,而本身不是const指针,可以改变指向
2、类型:char* const p;
这时p常被叫做const指针这个const可以理解为修饰指针p,就是说p一旦指向某对象就不可以再改变指向了,因此要就定义这个const指针时必须初始化
例如  int i=0,j=0;
      int * const p=&i;//ok定义时初始化
        *p=1;//ok,p不是指向const对象的指针
        p=&j;//错误,因为p已经指向i了不能更改指向了
3、类型 const char* const p;
就是像两个的综合:既不能通过p改变指向对象值也不可在p初始化后改变指向

思考赐予新生,时间在于定义
2013-07-13 00:18
梦米奇
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2013-7-12
收藏
得分:0 
   谢谢了,  我终于明白了。
2013-07-13 08:27
快速回复:常量与指针的困惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017081 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved