- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章C++常量指针,指针常量,指向常量的常指针详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
指针就是指向变量在内存中的地址 。
数据是存放在内存中的,每一个变量都有一个内存地址,假设是一个int类型变量a,占4个字节的内存区,那么在内存中如果是小端方式存储,我们创建指针p,把a的地址赋值给p,就是把a的首地址0x1100赋值给指针p,这个时候p的值就是变量a在内存中的首地址 。
int a =10;int*p;p=&a; //把a的首地址赋值给P
也就是说指针的值是这块内存区域的首地址 。
。
内存是一个很大的,线性的字节数组,每一个字节都是固定8个二进制位组成,计算机对每个内存单元都进行了编号,这个编号就称为内存地址,地址决定了内存单元在内存中的位置 。
。
在32位系统中,处理器一次能处理的最大位数是2的32次方 ,也就是一次处理4个字节的内存数据,哪么指针的长度也就是4个字节.
在64位系统中,处理器一次能处理的最大位数是2的64次方 ,也就是一次处理8个字节的内存数据,哪么指针的长度也就是8个字节.
32位系统指针4个字节 64位系统8个字节 。
。
const 是 constant 的缩写,本意是不变的,不易改变的意思 。
也就是说使用const修饰的变量,其值是不允许改变的 。
const int a = 7; int b = a; // 正确a = 8; // 错误,不能改变
。
在了解了上面的基础知识之后,我们来看一下什么是指针常量,常量指针和指向常量的指针 。
首先说一下怎么快速的记住他们的区别,只需要按照命名的顺序来读,就可以很好地记忆 。
比方说:
int * const p =&a;
首先是一个指针int * , 然后一个const常量 那么p就是指针常量 。
const int *p=&a;
首先是一个const常量, 然后一个指针int * 那么p就是常量指针 。
是不是很好记忆 。
。
int * const p =&a;
特点:指针的指向不可以修改,指针指向的内存的值可以修改 。
因为const的功能就是限定不可以修改,所以我们看到指针常量是先有了int *指针,再有的const修饰p 所以p的值(指向的内存地址) 是不可以修改的 。
也就是const限制的是指针p的值,但是没有限定p指向的内存地址里的数据,所以内存的数据可以修改 。
举例:
int a=10;int * const p =&a; //定义指针常量,指向int a的地址*p = 20; //正确,指向的内存地址中的数据可以修改 p=&b; //错误,指向的内存地址不可以修改
箭头是指针指向的内存值,是不可以修改的,但是指向的内存地址中的数据可以修改 。
。
const int *p=&a;
特点: 指针的指向可以修改,但是指针指向的值不可以修改.
常量指针,首先要是常量。就是指向的值要是一个常量,但是指向的内存地址不做限制 。
int a=10;int b=10;const int *p=&a; //定义常量指针,指向int a的地址*p = 20; //错误,指向的内存地址中的数据不可以修改 p=&b; //正确,指向的内存地址可以修改
箭头是指针指向的内存值,是可以修改的,但是指向的内存地址中的数据要和之前的一致 。
。
const int const *p=&a;
特点: 指针的指向不可以修改,指针指向的值也不可以修改.
两个const限制,一旦指向之后就不可以做修改了 。
int a=10;int b=10;const int const *p=&a; //定义指针常量,指向int a的地址*p = 20; //错误,指向的内存地址中的数据不可以修改 p=&b; //错误,指向的内存地址不可以修改
。
空指针就是指向地址为空的指针 。
注意:空指针指向的内存是不可以访问的 。
//-------空指针-------//int *p4 = NULL;//cout << *p4 << endl; //运行Error,使用指针时必须先判断是否空指针
野指针是指针指向了一个随意的内存地址,如果使用,会造成不可预知的内存错误 。
//-------野指针(悬浮、迷途指针)-------//int *p5 =0x1100; //任意赋值的野指针//cout << *p5 << endl; //运行Errorint *p6 = new int(5);delete p6; //删除p6的指向p6 = NULL; //一定要有这一步,否则p6会随机的指向一个地址
。
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我的更多内容! 。
原文链接:https://blog.csdn.net/as480133937/article/details/120804503 。
最后此篇关于C++常量指针,指针常量,指向常量的常指针详解的文章就讲到这里了,如果你想了解更多关于C++常量指针,指针常量,指向常量的常指针详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
全称“Java Virtual Machine statistics monitoring tool”(statistics 统计;monitoring 监控;tool 工具) 用于监控虚拟机的各种运
主要是讲下Mongodb的索引的查看、创建、删除、类型说明,还有就是Explain执行计划的解释说明。 可以转载,但请注明出处。  
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发。 2>循环服务器和并发服务器
详解 linux中的关机和重启命令 一 shutdown命令 shutdown [选项] 时间 选项: ?
首先,将json串转为一个JObject对象: ? 1
matplotlib官网 matplotlib库默认英文字体 添加黑体(‘SimHei')为绘图字体 代码: plt.rcParams['font.sans-serif']=['SimHei'
在并发编程中,synchronized关键字是常出现的角色。之前我们都称呼synchronized关键字为重量锁,但是在jdk1.6中对synchronized进行了优化,引入了偏向锁、轻量锁。本篇
一般我们的项目中会使用1到2个数据库连接配置,同程艺龙的数据库连接配置被收拢到统一的配置中心,由DBA统一配置和维护,业务方通过某个字符串配置拿到的是Connection对象。  
实例如下: ? 1
1. MemoryCahe NetCore中的缓存和System.Runtime.Caching很相似,但是在功能上做了增强,缓存的key支持object类型;提供了泛型支持;可以读缓存和单个缓存
argument是javascript中函数的一个特殊参数,例如下文,利用argument访问函数参数,判断函数是否执行 复制代码 代码如下: <script
一不小心装了一个Redis服务,开了一个全网的默认端口,一开始以为这台服务器没有公网ip,结果发现之后悔之莫及啊 某天发现cpu load高的出奇,发现一个minerd进程 占了大量cpu,googl
今天写这个是为了 提醒自己 编程过程 不仅要有逻辑 思想 还有要规范 代码 这样可读性 1、PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 funct
摘要:虚拟机安装时一般都采用最小化安装,默认没有lspci工具。一台测试虚拟网卡性能的虚拟机,需要lspci工具来查看网卡的类型。本文描述了在一个虚拟机中安装lspci工具的具体步骤。 由于要测试
1、修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统
目录 算术运算符 基本四则运算符 增量赋值运算符 自增/自减运算符 关系运算符 逻
如下所示: ? 1
MapperScannerConfigurer之sqlSessionFactory注入方式讲解 首先,Mybatis中的有一段配置非常方便,省去我们去写DaoImpl(Dao层实现类)的时间,这个
Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等,这里使用LXC的网络虚拟化来模拟多个网络环境。 本文从基本的网络设备讲
? 1
我是一名优秀的程序员,十分优秀!