const修饰指针+volatile +restrict
const这块的难点
const修饰指针有以下的几种形式 ,不同的形式 它的意义不一样。
形式1:
int a=23;
const int *p=&a; a是int型,&a是int *型的,要把int *型的赋给 const int *型的。涉及到了点类型转换。
问 const int *p=&a;这个操作,导致了谁不能被操纵了?!
这里修饰的是 *p,所以 *p 如果重新赋值是不可以的!!

*p不能变,但是p是可以变的。

第二种:
int const * p 这种情况和 const int *p 是一模一样的,都是修饰 *p。
第三种:
int * const p;结果是 *p可以变,p不能变。

还是比较容易理解的:
就看const修饰的是谁,const如果在*p的前面,修饰的就是*p,*p就是常量了,就不能变(也就是不能通过*p重新赋值)。
const如果放在* 和 p中间了, * const p,修饰的就是p,p就是常量了,就不能重新赋值了。
第四种:
如果既想让*p不能变,又想让 p不能变,如何写??!!
让他俩都被修饰——const int * const p(第一个const修饰了*p,第二个const修饰了p),这时,*p不能变,p也不能变。


volatile (是对存储位置的优化)

restrict(对代码量的优化)

const修饰指针+volatile +restrict的更多相关文章
- const修饰指针
关于const修饰指针的情况,一般分为如下4种情况: ; const int *a =&b; //情况1 int const *a =&b; //情况2 int* const a =& ...
- C语言--const修饰指针解析
这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...
- 关于const修饰指针
const修饰指针,一般分为如下四种情况: int b = 500; const int *a = &b; //情况1 int const *a = &b // 2 ...
- C++ --const修饰指针
const修饰指针 1.const修饰指针 (常量指针)常量的指针 const int *p = &a; const修饰的是*p(表示内容为常量),不是p(指针) 指针指向的地址可以改,但指针 ...
- C++中使用const修饰指针
在本文中呢,主要讲解四个方面,即:常量数据的与否和常量指针的与否中const如何对指针进行修饰: 1.指向非常量数据的常量指针 对于一个指向非常量数据的常量指针,我们应该清楚的知道,在这我们注重的是指 ...
- const修饰指针的三种效果
当用const进行修饰时,根据const位置的不同有三种不同效果. 判断的标准是:const修饰谁,谁的内容就是不可变的. 1 const int *p = &a; const修饰*p, *p ...
- const修饰指针时应注意的问题
1.指向常量的指针 顾名思义,一个指针指向const对象,则称它为指向常量的指针. ; int* ptr=&a; //错误 const int* ptr=&a; //必须用const来 ...
- C++中const修饰基本数据类型、指针、引用、对象
const修饰基本数据类型 #include <iostream> using namespace std; void main(){ const int a = 1; const cha ...
- C++中的const和指针组合
在C++里,const修饰指针有以下三种情况 (1)指针常量:即指向常量的指针 const int *p或者int const *p const在*前,,可以这样理解它的功能,因为const在*前, ...
随机推荐
- 关于Hibernate 连接mysql不能自动建表的问题
最近看旧书,李刚那本<轻量级J2EE>在讲解hibernate的时候遇到一个问题,就是与mysql连接后,明明配置了自动建表,却老是建不了表,上网查了发现是方言的原因,到底什么是方言?这里 ...
- Lesson 01-Linux安装及基础命令
.Linux安装(略)2.基础命令 cd 切换目录 /home 切换到home目录 . 代表当前目录 .. 代表切换到当前目录的上级目录 ~ 代表切换到用户家目录 空 代表切换到用户家目录 - 代表切 ...
- RESTClient的基本使用
1.本人使用的是火狐浏览器,其他浏览器应该也有(没试过),安装插件RESTClient. 2.1.打开RESTClient:
- AI illustrator 如何裁剪图片(扣取局部区域)
AI如何裁剪图片 在使用illustrator的过程中,很多亲想要AI的裁剪功能与ps一样强大,但是AI常用的裁剪图片方法如下. 工具/原料 illustrator cs6 应用剪切蒙版剪切图片 ...
- Uniprot数据库
Uniprot数据库是Universal Protein的英文缩写,是信息最丰富.资源最广的蛋白质数据库. UniprotKB由两部分组成: UniProtKB/Swiss-Prot 高质量的.手工注 ...
- docker run -v参数
挂载目录(直接给例子吧) -v=[]:绑定挂载目录 宿主机绑定: -v<host>:<container>:[rw|ro] 在Docker中新建一个共享的卷: -v /< ...
- springboot2.0配置连接池(hikari、druid)
springboot2.0配置连接池(hikari.druid) 原文链接:https://www.cnblogs.com/blog5277/p/10660689.html 原文作者:博客园--曲高终 ...
- input[type=file]的美化
__ 一般的选择框在美化过程中会出现各种问题,样式出错,文字无法更改等... 所有随之而生的便是这样的一种修饰方式:[将type=file的input与另一个按钮通过js绑定,这样便可以通过改变另一个 ...
- CF Manthan, Codefest 16 B. A Trivial Problem
数学技巧真有趣,看出规律就很简单了 wa 题意:给出数k 输出所有阶乘尾数有k个0的数 这题来来回回看了两三遍, 想的方法总觉得会T 后来想想 阶乘 emmm 1*2*3*4*5*6*7*8*9 ...
- 常见adb指令
1. adb –-help 查看帮助文档 2. adb start-server 当adb没有启动或被手动杀掉时,可以使用该命令启动服务 3. adb kill-server 杀死adb服务 4. a ...