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 = ;
const int c = ; //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 = ;
cout<<"i:"<<i<<endl;
cout<<"将pR的地址变成常量c的地址:"<<endl;
pR = &c;
cout<<"*pR:"<<*pR<<endl;
cout<<"指向常量的指针pC操作:"<<endl;
//pC = &c; //去掉语句前方注释报错
cout<<"通过pC改变i值:"<<endl;
*pC = ;
cout<<"i:"<<i<<endl;
cout<<"指向常量的指针常量pCR操作:"<<endl;
//pCR =&c;
//*pCR =100;
cout<<"通过pCR无法改变任何东西,真正作到了只读"<<endl;
return ;
}

运行结果:

最新文章

  1. Java 浅析三大特性之一封装
  2. asp.net mvc多条件+分页查询解决方案
  3. plt和got
  4. js 与ios 交互的三种方法
  5. 一种仿照Asp.net Mvc思维构建WebSocket服务器的方法
  6. AutoLayout技术选型和应用
  7. JQuery基础教程:事件(下)
  8. 未能正确加载“Microsoft.VisualStudio.Implementation.EditorPackage”包
  9. Android Sutido 编译速度优化
  10. storm 事务和DRPC结合
  11. 8051、ARM和DSP指令周期的测试与分析
  12. centos6.2+nginx-1.2.3+php-5.3.17安装脚本
  13. javascript: 字符串拼接有问题
  14. 【G】开源的分布式部署解决方案文档 - Web Deploy
  15. Android开发模板代码(一)——简单打开图库选择照片
  16. [Python设计模式] 第19章 分公司=部门?——组合模式
  17. codefroces 450B矩阵快速幂
  18. TPshop学习
  19. Linux uname命令详解
  20. oracle 修改属性

热门文章

  1. 【Tomcat】热部署的遗留配置导致服务器无法启动
  2. iview发布到IIS 路由问题
  3. Mysql8.0安装与配置
  4. Scala新版本学习(1):
  5. fiddler抓包小技巧之自动保存抓包数据(可根据需求过滤)
  6. 第十篇.5、python并发编程之协程
  7. Jansson库的使用简介
  8. 第二章 Vue快速入门-- 26 过滤器-定义私有过滤器
  9. Tarjan求点双连通分量
  10. Centos7——docker入门(笔记)