const指南

基本词义 

意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用!

使用方法

const int a=1;//这里定义了一个int类型的const常数变量a; 

但对于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆!

我们来看一个如下的例子:

 //程序作者:管宁 

//站点:www.cndev-lab.com 

//所有稿件均有版权,如要转载,请务必著名出处和作者 

#include <iostream> 

using namespace std; 

void main(void) 

{ 

const int a=10; 

int b=20; 

const int *pi; 

pi=a; 

cout <<*pi << "|" << a <<endl; 

pi=b; 

cout <<*pi << "|" <<b <<endl; 

cin.get(); 

} 

上面的代码中最重要的一句是 const int *pi 

这句从右向左读作:

  pi是一个指向int类型的,被定义成const的对象的指针; 

这样的一种声明方式的作用是可以修改pi这个指针所指向的内存地址却不能修改指向对象的值。

  如果你在代码后加上*pi=10;这样的赋值操作是不被允许编译的!

请看如下的代码

//程序作者:管宁 

//站点:www.cndev-lab.com 

//所有稿件均有版权,如要转载,请务必著名出处和作者 

#include <iostream> 

using namespace std; 

void main(void) 

{ 

int a=10; 

const int *const pi=a; 

cout <<*pi << "|" <<a <<endl; 

cin.get(); 

} 

上面的代码中最重要的一句是 const int *const pi 

这句从右向座读作:

  pi是一个指向int类型对象的const指针; 

这样的一种声明方式的作用是你既不可以修改pi所指向对象的内存地址也不能利用指针的解引用方式修改对象的值;

所以你如果在最后加上*pi=20,想试图通过这样的方式修改对象a的值是不被允许编译的!

时间: 2024-11-03 22:31:47

const指南的相关文章

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵.如果你是某种语言老手,你就是那门语言的"传道者",下意识地会保护它.无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的.<肖申克的救赎>对此有很好的注脚: [Red] These walls are funny.

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

计算几何-圆 模板 训练指南267

#include #include #include #include #include #include #include #include #include #include #define MM(a) memset(a,0,sizeof(a)) typedef long long ll; typedef unsigned long long ULL; const double eps = 1e-10; const int inf = 0x3f3f3f3f; using namespace

Google C++编程风格指南

一.头文件 1. #define的保护:所有头文件都应该使用#define防止头文件被多重包含(multiple inclusion),命名格式: <PROJECT>_<PATH>_<FILE>_H_ 为保证唯一性,头文件的命名应基于其所在项目源代码树的全路径. 2.头文件依赖:使用前置声明(forward declarations)尽量减少.h文件中#include的数量.避免多米诺骨牌效应 e.g.头文件中用到类File,但不需要访问File的声明,则头文件只需前置

GOOGLE PROTOBUF开发者指南

ProtoBuf开发者指南 译者: gashero 目录 1   概览 1.1   什么是protocol buffer 1.2   他们如何工作 1.3   为什么不用XML? 1.4   听起来像是为我的解决方案,如何开始? 1.5   一点历史 2   语言指导 2.1   定义一个消息类型 2.2   值类型 2.3   可选字段与缺省值 2.4   枚举 2.5   使用其他消息类型 2.6   嵌套类型 2.7   更新一个数据类型 2.8   扩展 2.9   包 2.10   定

《高质量程序设计指南C/C++语言》笔记总结

在对林锐,韩永泉编著的<高质量程序设计指南C/C++语言>的学习中,我从中了解到了很多编程的小细节和重要的概念,特总结规整如下: 1.标准C语言允许任何非void类型的指针和void类型的指针之间进行直接的相互转换.但在C++中,可以把任何类型的指针直接指派给void类型指针,因为void*是一种通用指针:但是不能反过来将void类型指针直接指派给任何非void类型的指针,除非进行强制转换.因此在C语言环境中我们就可以先把一种具体类型的指针如int*转换为void*类型,然后再把void*类型

const 详解

? 简单分类: 常变量        const 类型 变量名  或者   类型 const  变量名 常引用        const 类型& 引用名  或者  类型 const & 引用名 常对象        const 类名     对象名  或者  类名 const     对象名 常数组        const 类型     数组名   或者  类型  const     数组名 常成员函数    类名::fun(形参) const 常指针        const 类型*指

【转】这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已

[转]这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已 Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的 本文秉承着:你看不懂是你SB,我写的代码就要牛逼. 1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都弱爆了 2.如何装逼用代码骂别人SB (!(~+[])+{})[--[~+&qu

在Win7(64位)使用VS2015运行《OpenGL编程指南》第八版第一章程序的方法

前言:笔者第一次用vs2015来实现<OpenGL编程指南>第八版第一个程序时确实花费了不少时间,按照网上教程,尝试了各种方法,最终花费了两个上午加一个下午的时间, 成功运行了程序,花了这么多时间,确实让人懊恼,现在把运行程序的步骤记录下来,以便查阅. 1.第一步,下载oglpg-8th-edith. 如果去书本上的官网下载,下载的是第九版的,而不是第八版的源码. 去其他网站下载,下载的这个包里面没有第一章的源码,可以网上黏贴其他人的代码,建议下第八版源码,下载网址:链接:http://pan