C++入门经典-例5.6-指针与const

C++入门经典-例5.6-指针与const

1:同其他数据类型一样,指针也有常量,使用const关键字定义,形式如下:

int i=9;

int *const p=&i;//无法改变内存指向

*p=3;

    将关键字const放在标识符前,表示这个数据本身是常量,而数据类型那个int*即整形指针。与其他常量一样,指针常量必须初始化。我们无法改变它的内存指向,但是可以改变它指向内存的内容。

    若将const以如下形式使用时:

int i=9;

const int *p=&i;//不允许通过指针修改内容

    这是指向常量的指针,虽然它所指向的数据可以通过赋值语句进行修改,但是通过该指针修改内存内容的操作是不允许的。

    当const以如下形式使用时:

int i=9;

const int *const p=&i;

    该指针是一个指向常量的指针常量,既不可以改变它的内存指向,也不可以通过它修改指向内容的内容。

2:运行代码:

// 5.6.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;

int main()
{
    int i = 5;
    const int c = 99; //c为常量
    const int* pR = &i;//这个指针只能用来“读”内存数据,但可以改变自己的地址。
    int* const pC = &i;//这个指针本身是常量,不能改变指向,但它能够改变内存的内容。
    const int* const pCR = &i;//这个指针只能用来“读”内存数据,并且不能改变指向。
    cout<<"三个指针都指向了同一个变量i,同一块内存"<<endl;
    cout<<"指向常量的指针pR操作:"<<endl;
    //*pR = 6             //去掉语句前方注释报错
    cout<<"通过赋值语句修改i:"<<endl;
    i = 100;
    cout<<"i:"<<i<<endl;
    cout<<"将pR的地址变成常量c的地址:"<<endl;
    pR = &c;
    cout<<"*pR:"<<*pR<<endl;
    cout<<"指向常量的指针pC操作:"<<endl;
    //pC = &c;            //去掉语句前方注释报错
    cout<<"通过pC改变i值:"<<endl;
    *pC = 6;
    cout<<"i:"<<i<<endl;
    cout<<"指向常量的指针常量pCR操作:"<<endl;
    //pCR =&c;
    //*pCR =100;
    cout<<"通过pCR无法改变任何东西,真正作到了只读"<<endl;
      return 0;
}

View Code

运行结果:

posted @ 2017-09-14 18:05 一串字符串 阅读(...) 评论(...) 编辑 收藏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++Builder精彩编程实集锦的源代码(4,5,6部分): 第四部分 图像处理 实124 如何浏览图像 实125 如何滚动浏览大图像 实126 如何拖动图像 实127 如何动态显示图像 实128 如何维护多个图像 实129 如何绘制图形 实130 如何以不规则方式裁剪图像 实131 如何以任意角度旋转显示图像 实132 如何在桌面上显示图像 实133 如何拷贝当前屏幕 实134 如何打印图像文件 实135 如何制作马赛克图像 实136 如何实现图像中心扩散效果 实137 如何实现图像百叶窗效果 实138 如何实现图像底片化效果 实139 如何实现图像翻页效果 实140 如何实现图像镜像效果 实141 如何柔化处理图像 实142 如何锐化处理图像 实143 如何雾化处理图像 实144 如何将彩色图像转换成黑白图像 实145 如何将BMP图像文件转换为JPG图像文件 实146 如何全屏播放AVI文件 实147 如何制作媒体播放器 第五部分 系统编程 实148 如何获取键盘类型 实149 如何获取声卡配置 实150 如何获取处理器信息 实151 如何获取系统元素颜色 实152 如何获取显示元素信息 实153 如何获取系统支持的显示模式 实154 如何动态设置系统的显示模式 实155 如何获取内存空间信息 实156 如何获取磁盘类型 实157 如何获取磁盘卷信息 实158 如何获取磁盘空间信息 实159 如何在我的电脑中隐藏磁盘 实160 如何隐藏系统任务栏 实161 如何隐藏桌面图标 实162 如何在桌面上创建快捷方式 实163 如何获取和设置桌面墙纸 实164 如何设置桌面墙纸显示方式 实165 如何进行系统桌面切换 实166 如何禁止系统屏幕保护程序 实167 如何在程序中启动系统屏幕保护程序 实168 如何在开始右键菜单中添加菜单项 实169 如何清空系统回收站 实170 如何删除文件到回收站 实171 如何启动控制面板程序 实172 如何在系统控制面板中添加项目 实173 如何为计算机增加启动日志 实174 如何获取操作系统的启动模式 实175 如何变暗屏幕颜色 实176 如何关闭计算机 实177 如何禁止关闭Windows操作系统 实178 如何修改IE浏览器的背景 实179 如何在程序中控制IE窗口 实180 如何使用默认浏览器打开指定网页 实181 如何获取当前正在运行的程序 实182 如何监视系统剪贴板变化 实183 如何获取系统剪贴板的数据格式 实184 如何设置系统日期 实185 如何获取操作系统的产品序列号和产品名称 实186 如何获取和设置鼠标双击响应速度 实187 如何弹出和关闭光驱 实188 如何检测网络连接 实189 如何创建拨号网络 第六部分 数据库应用 实190 如何创建不写代码的数据库程序 实191 如何添加TDBNavigator组件的按钮功能 实192 如何对数据库记录求和 实193 如何对数据库记录求平均值 实194 如何使用Locate方法查询数据库记录 实195 如何查询固定范围的数据库记录 实196 如何提高数据库应用程序查询效果 实197 如何使用数据集的书签 实198 如何浏览数据库中的图像 实199 如何在删除数据库记录前给予提示 实200 如何取得数据集的当前状态 实201 如何创建主从关系的数据集 实202 如何在一个数据集中浏览另一个数据集的数据 实203 如何在数据库更新过程中增加事务操作 实204 如何在程序中实现查找字段 实205 如何在程序中实现自定义字段 实206 如何使用字段拖放功能 实207 如何为程序添加报表打印功能 实208 如何使用向导创建打印报表 实209 如何设置一对多数据库表 实210 如何设置一对多报表打印功能 实211 如何根据一对多数据库表绘制图形 实212 如何根据数据库表显示饼图 实213 如何根据数据库表绘制条形图 实214 如何动态绘制数据库图表 实215 如何设置多重群组的打印报表 实216 如何编写商业决策分析程序 实217 如何导出对象库中的商业决策分析程序 实218 如何打印含有图像字段的数据库表 实219 如何实现数据库表整表复制 实220 如何实现数据库记录的批量删除 实221 如何实现数据库记录的批量修改 实222 如何使用SQL Builder工具创建SQL语句 实223 如何在程序运行时指定SQL语句 实224 如何在程序中创建并使用数据库 实225 如何在程序中控制与数据库的连接 实226 如何在程序中创建Access数据库ODBC数据源 实227 如何在程序运行时创建数据库BDE别名 实228 如何在安装程序中设置BDE引擎 实229 如何消除MS-SQL Server数据库连接的登录框 实230 如何连接MS-SQL Server数据库 实231 如何连接MS-Access数据库 实232 如何连接dBase数据库 实233 如何使用ODBC连接Excel表 实234 如何使用ADO操作Access数据库 实235 如何定制DBGrid组件的列表头 实236 如何统计DBGrid组件多选单元格 实237 如何设置DBGrid组件指定单元格的颜色值 实238 如何在DBGrid组件单元格中增加下拉菜单 实239 如何定制StringGrid组件指定单元格的颜色 实240 如何获取StringGrid组件鼠标指定单元格的值 实241 如何使用StringGrid组件显示数据库查询结果 实242 如何禁止数据控制组件与数据集组件同步刷新 实243 如何把数据库表转换成文本文件 实244 如何把数据库中的数据写入Word文档 实245 如何设置数据库字段的输入显示格式 实246 如何管理数据库程序的错误信息 实247 如何获取数据库BDE别名 实248 如何获取数据库BDE别名参数信息 实249 如何获取数据库的工作目录 实250 如何获取数据库驱动程序名称

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值