再学C/C++ 之 指针常量 和 常量指针
(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++ 之 指针常量 和 常量指针的更多相关文章
- c++ 指针常量,常量指针
当const遇到指针 一般来说,const修饰指针可以分为下面的集中情况. 描述 例子 含义 备注 const在*的左边 const int *b=&a; int const *b=& ...
- 【C】 01 - 再学C语言
“C语言还用再学吗?嵌入式工程师可是每天都在用它,大家早就烂熟于心,脱离语言这个层面了”.这样说不无道理,这门古老的语言以其简单的语法.自由的形式的而著称.使用C完成工作并不会造成太大困扰,所以很少有 ...
- 再学C++之C++中的全部关键字
/*______C++全部关键字___________*/ asm do if return try auto double inline short typedef bool dynamic_cas ...
- 【转】C++易混知识点1: 指针常量和常量指针的区别,附有详细案例解释
熟悉C++也已经有一些年头了,今天突然翻出当年浏览的书籍,对一些概念居然生疏了,指针常量和常量指针由于 指针 这一特殊的对象而变得难以区别.因此,在思考再三之后,决定写下该篇总结,加强对他们的区别: ...
- 【转】const int *p和int * const p的区别(常量指针与指向常量的指针)
[转]作者:xwdreamer 出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &am ...
- 再学Java 之 interface的成员变量
前言:最近在学多线程,写“哲学家就餐问题(Dining Philosophers)”的时候,需要定义一个全局的变量,即哲学家的人数.常用的做法是在其中一个类中定义一个static final的变量,然 ...
- 数组/指针/const/字符串常量的使用传值问题
#include<stdio.h> #include<string.h> int main() { ] = "abcd"; //常指针a指向字符串常量&qu ...
- C++ const 常量和常指针
常量,该指针所指向的值为只读 ; const int * p = &a; 常指针,该指针的值为只读,不可再指向其他地址 const * const p = &a; 常值,常指针 con ...
- 常量指针-指向常量的指针,指针常量-指针本身是常量,常量-不能更改值的常量,数组指针-是指针int (*p)[n] 指针数组-是数组int *p[n]
1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常 ...
随机推荐
- 汉诺塔问题的算法分析与实现(Java)
汉诺塔问题是源于印度一个古老传说的益智玩具.要求将圆盘从A柱移动到C柱规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 可以先通过3个盘子的hanoi游戏得出其算法步骤如下: if ...
- [ThinkPHP] 比较标签 neq&nheq 与 PHP 中的 != 与 !== 出现的问题
1. 模板 > 内置标签 > 比较标签 控制器: $_data['list'] = [ 'dingo' , 'engo' , 'fengo' , 'gingo' , 'autoFill'= ...
- 谈谈INotifyPropertyChanged和ICommand
WPF,Windows8和Windows Phone开发中的MVVM设计模式中很重要的两个接口是INotifyPropertyChanged和ICommand,深入理解这两个接口的原理,并掌握其正确的 ...
- 深夜配置一把struts2
在intellij idea里面配置出来了struts2的一个Helloworld,因为换了工具,在网上查了很多关于IDEA配置它的方式,好多是用Maven解决依赖关系的.于是按照网上的来,发现很多东 ...
- DNS本机可解析,其他主机通过本机无法解析问题
新建了一个redhat虚拟机,将此虚拟机作为dns服务器使用,配置完以后宿主机的dns服务器设置为配置好的虚拟机地址,结果总是显示no Server Reached,没有服务器可以到达,花了很长时间终 ...
- (zxing.net)一维码EAN 8的简介、实现与解码
一.简介 一维码EAN 8:属于国际标准条码,由8个数字组成,属EAN的简易编码形式(EAN缩短码).当包装面积小于120平方公分以下无法使用标准码时,可以申请使用缩短码. 依结构的不同,EAN条码可 ...
- django系列6--Ajax01 特点, 基本格式, 向前端发送数据
一.Ajax了解 AJAX(Asynchronous Javascript And XML)优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容 优点: 1.ajax使用Java ...
- 【ocp-12c】最新Oracle OCP-071考试题库(45题)
45.(9-16)choose the best answer: View the Exhibit and examine the data in the EMPLOYEES table. You w ...
- 【OCP-12c】CUUG 071题库考试原题及答案解析(24)
24. choose the best answer In the EMPLOYEES table there are 1000 rows and employees are working in t ...
- JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?
JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么? 最简单的回答是,stringbuffer 基本没有适用场景,你应该在所有的情况下选择使用 stringbu ...