再学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; 注:可以将一个常 ...
随机推荐
- Appium之启用手机桌面APP的多种方法
方法一: 其实之前的随笔 Appium之连续启动多个应用(APP)中已经介绍了可以用appium下的start_activity()方法来启动一个应用,那这里就不再说明啦. 方法二: 因为有时用sta ...
- ZOJ3767 Elevator 2017-04-13 23:32 37人阅读 评论(0) 收藏
Elevator Time Limit: 2 Seconds Memory Limit: 65536 KB How time flies! The graduation of this ye ...
- Java Web系列:JAAS认证和授权基础
1.认证和授权概述 (1)认证:对用户的身份进行验证. .NET基于的RBS(参考1)的认证和授权相关的核心是2个接口System.Security.Principal.IPrincipal和Syst ...
- 使用C语言实现线性表
线性表是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列,序列中的每个数据元素,可以是一个数字,可以是一个字符,也可以是复杂的结构体或对象.例如:1,2,3,4,5是一个线性表,A,B ...
- Cenots 7 Configure static IP
For example: # cd /etc/sysconfig/ifcfg-enp3s0 # cat ifcfg-enp3s0 TYPE=EthernetBOOTPROTO=staticIPADDR ...
- sql2008 获取表结构说明
SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.color ...
- apache ap 并发测试工具
可以使用 apache httpd 软件包里的 ab.exe 简单的做些网站的性能测试, ab.exe 是一个命令工具,所以不能双击运行, 在 cmd 下运行: ab.exe -n 1000 -c 5 ...
- django drf Token验证
https://www.django-rest-framework.org/api-guide/authentication/#basicauthentication 1.INSTALLED_APPS ...
- 巧用网页开发者工具F12 审查、修改元素、去除广告、屏蔽遮罩
巧用网页开发者工具F12 审查.修改元素.去除广告.屏蔽遮罩 每当打开一个网页的时候,是否为页面有很多广告而烦恼:是否为要操作页面(例如观看超清视频),请先注册登录等等事情而麻烦:是否对网页加锁的视频 ...
- PostMan工具使用之基础篇
PostMan工具使用之基础篇 一.什么是PostMan Postman一款非常流行的API调试工具.(其他测试工具 Jmeter.soapUI) 二.下载及安装: 1.下载: 下载地址:https: ...