| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 214 人关注过本帖
标题:const 和指针问题
收藏  订阅  推荐  打印
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:148
积分:1656
注册:2008-7-6
const 和指针问题

各位,我请教一个问题.
在C++ 中
int n;
const int  *p=&n;  // 是可以的

const int n=5;
int *p=&n  //是不允许的

那么
int n;
int *p=&n;
const int **pp=&p;  //允许吗?  如果允许的话,const int **pp=&p; 是表示 p不可更改还是表示n不可更改?

int n;
const int *p=&n;
const int **p = &p;//允许吗?
搜索更多相关主题的帖子: const  指针  
2008-8-22 19:22
zerocn
Rank: 2
等级:注册会员
帖子:124
积分:1458
注册:2006-4-11

const int *p//这样是指向常对象的指针,不能通过更改p的值而修改p所指向的对象的值
int const *p;//这是一个常指针,表示p只能指向初始化的的变量,不能更改其指向
int n;
int *p=&n;
const int **pp=&p;  //允许吗?  如果允许的话,const int **pp=&p; 是表示 p不可更改还是表示n不可更改?

int n;
const int *p=&n;
const int **p = &p;//允许吗?
以上两个都可以,只要符合常对象只能被指向常对象的指针所指向即可
2008-8-22 20:10
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:148
积分:1656
注册:2008-7-6
回复

楼上说错了,,第一个是不允许的!

一级关系时,你可以把一个普通变量的地址赋值给指向常量的指针
但是两级关系的时候,把const 与 非const 混合发赋值方式是不安全的,也是不允许的.

如果数据类型本身不是指针,可以将const 数据和非const 数据的地址赋给指向const 的指针,但是将非const 数据的地址赋给const 指针,那就错了!
2008-8-23 18:44
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.055212 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved