中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
my C++ 陷阱与缺陷
作者:未知 时间:2005-09-13 23:28 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:my C++ 陷阱与缺陷

『关键字』指针常量 常量指针 指针引用 C++陷阱与缺陷

最近在看C++ Primer
感觉到这书的厚重
读到第三章
发现了C语言陷阱与缺陷中曾经提到过的一个C++语义上特别容易混淆的
和晦涩的地方-指针常量与常量指针

写了一段代码来总结经验
代码的用途是声明和定义

一个指向const常量的指针引用和一个指向变量的指针引用

 const int ival = 1024;//常量
 
 //方法一
 const int * pi = &ival;//pi是指向常量的指针,也就是常量指针
 const int * & pi2 = pi;//pi2是指向常量的指针的引用,也就是常量指针引用
 
 //方法二
 //这是比较晦涩的地方
 //第一个const说明引用指针指向的对象是常量,这从ival的定义上得出
 //第二个const说明pi3是个const引用
 //第二个const的使用是因为&ival是文字常量,它是个值,不可寻址,
 //编译器实际上是先生成一个临时变量temp=&ival,再由pi3指向temp
 //但是这种规则只有在const引用中才会出现。所以pi3也必须是个const值
 
  const int * const & pi3 = &ival;
 
 //非const变量的指针引用
 int ival2 = 2048;
 int * const & pi4 = &ival2;
 

代码如下

//////////////////////////////////////////////////////////////

#include <iostream>

using namespace std;

int main(void)
{
 const int ival = 1024;
 const int * pi = &ival;
 const int *& pi2 = pi;
 
 const int ival2 = 2048;
 const int* const & pi3 = &ival2;
   
 int ival3 = 4096;
 int * const & pi4 = &ival3;
    
 return 1;
 

}

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有