(1)指针常量,将指针的指向当成常量。即指针变量的值只能在定义的时候初始化,定义后不能修改,也就是说不能改变指针变量的指向。但是不影响所指对象的访问特征。其定义形式为:

类型 * const 指针
//类型是该指针所指对象的类型,*为指针类型说明符。

实例1:

int var1 = ;
int var2 = ; //初始化指针常量,
int *const const_P1 = &var1;
//指针常量值定义指针的指向不能修改,
//如,这里将const_P1指向var2的地址,就错了,
//下面的语句会报错
const_P1 = &var2;
//但是,指针常量不影响指针所指对象的访问特征,
//即,这里可以修改const_P1的对象的值
*const_P1 = ; //输出200;
cout << *const_P1 << endl;
//输出200;
cout << var1 << endl;

(2)常量指针,又称为指向常量的指针,意思是,将指针所指的对象当成一个常量,即其访问特征为常量,但是,指针的指向可变。定义的形式:

类型 const * 指针
或者
const 类型 * 指针
//类型是该指针所指对象的类型,*为指针类型说明符。

实例2:

    int var1 = ;
const int var2 = ; const int * P1;
const int * P2;
P1 = &var1;
//上面的语句将P1指向var2,就是将其访问特性设置为常量,即不可修改,
//所以下面的语句会报错。
*P1 = ;
//常量指针不影响指针的指向,所以这里可以重新指向var2
P1 = &var2;

注意:a、常量指针,无论所指的对象是否为常量,均不能通过*p修改。

   b、为了保证标识常量的只读性,常量的地址只能赋给常量指针(即指向常量的指针)。

(3)总结的来说,指针常量,就是把指针当成常量(指向不可变);常量指针,就是把所指对象当成常量。

如果读者,对此还是记不住的话,可以参考这篇文章:http://www.cnblogs.com/jonnyyu/archive/2005/06/19/89766.html

再学C/C++ 之 指针常量 和 常量指针的更多相关文章

  1. c++ 指针常量,常量指针

    当const遇到指针 一般来说,const修饰指针可以分为下面的集中情况. 描述 例子 含义 备注 const在*的左边 const int *b=&a; int const *b=& ...

  2. 【C】 01 - 再学C语言

    “C语言还用再学吗?嵌入式工程师可是每天都在用它,大家早就烂熟于心,脱离语言这个层面了”.这样说不无道理,这门古老的语言以其简单的语法.自由的形式的而著称.使用C完成工作并不会造成太大困扰,所以很少有 ...

  3. 再学C++之C++中的全部关键字

    /*______C++全部关键字___________*/ asm do if return try auto double inline short typedef bool dynamic_cas ...

  4. 【转】C++易混知识点1: 指针常量和常量指针的区别,附有详细案例解释

    熟悉C++也已经有一些年头了,今天突然翻出当年浏览的书籍,对一些概念居然生疏了,指针常量和常量指针由于 指针 这一特殊的对象而变得难以区别.因此,在思考再三之后,决定写下该篇总结,加强对他们的区别: ...

  5. 【转】const int *p和int * const p的区别(常量指针与指向常量的指针)

    [转]作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &am ...

  6. 再学Java 之 interface的成员变量

    前言:最近在学多线程,写“哲学家就餐问题(Dining Philosophers)”的时候,需要定义一个全局的变量,即哲学家的人数.常用的做法是在其中一个类中定义一个static final的变量,然 ...

  7. 数组/指针/const/字符串常量的使用传值问题

    #include<stdio.h> #include<string.h> int main() { ] = "abcd"; //常指针a指向字符串常量&qu ...

  8. C++ const 常量和常指针

    常量,该指针所指向的值为只读 ; const int * p = &a; 常指针,该指针的值为只读,不可再指向其他地址 const * const p = &a; 常值,常指针 con ...

  9. 常量指针-指向常量的指针,指针常量-指针本身是常量,常量-不能更改值的常量,数组指针-是指针int (*p)[n] 指针数组-是数组int *p[n]

    1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常 ...

随机推荐

  1. Jdom简单的修改xml文件实现

    上一篇博客写到在打开outputStream 时总是报错,而且出现jdom有问题,后来注意到junit提示的一个错误:文件过早关闭. 顾名思义:用getResorceAsStream打开了文件作为输入 ...

  2. ETL开发

    要进入开发阶段,了解不同的ETL产品. 整个ETL系统中,时间或更精确的,吞吐量是主要关心的内容.这种转换处理任务设计的主要目的归根结底是使得数据装载到展现表中最快并使得最终用户能快速的从这些表中得到 ...

  3. linux 用户/用户组添加修改删除(ubuntu/centos)

    一.LINUX(UBUNTU/CENTOS)用户添加删除修改 1.建用户: adduser web                             //新建web用户 useradd web  ...

  4. jconsole连接远程tomcat

    windows(Windows操作系统下的远程监控) 1.编辑文件:在进入到了tomcat中的bin的目录中,进行打开catalina.bat进行编辑文件. 2.添加代码:找到文件中的如下代码 rem ...

  5. c3p0--常见异常

    获取资源timeout: 异常信息如下: Caused by: java.sql.SQLException: An attempt by a client to checkout a Connecti ...

  6. 使用Object.create()实现继承

    一.常见继承方式 我们日常开发中常见的继承方式主要有: 1.默认模式: Child.prototype = new Parent(); 2.借用构造函数: function Child(a, b, c ...

  7. angular响应式表单 - 状态字段

    用于表单验证的过程: touched,untoched pristine,dirty pending

  8. 论 BUG调试与(程序猿)初学者

    作为一枚程序猿,BUG调试是最基本的技能,对于初学者更是重中之重.个人而言,要想为自己的程序猿生涯更上一层楼,就得知道什么是BUG调试,而且还必须知道怎么调好BUG.那么BUG究竟是什么呢?在我之前的 ...

  9. (zxing.net)二维码Data Matrix的简介、实现与解码

    一.简介 Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matri ...

  10. sql-修改每条数据的某一个字段的值

    update B set B.maildata =(select SUBSTRING(maildata,0,3) from basedata where basedata.cid = B.cid)+( ...