• const:常量、只读【不能变】

    char *p;

    const char *p;    【T】  字符串内容可以为“hello world”或“aaa”,但只读(不可修改)

    char const *p;

    char * const p;    【T】  一般为硬件资源 ,地址不变,但地址内容可变。

    char *p const;

    const char * const p;    ROM

  • volatile

    防止优化指向内存地址。

   

  • typedef

   

  •  指针加法

  指针的加法、减法运算,实际上加的是一个单位,单位的大小为sizeof(p)

  指针的自增和加一是有区别的:

  eg: int *p;  p+1  //以p为参考位置(p值不变)。

          p++、p--  //地址会更新(p值有变化)。

  eg:  

    int a = 0x12345678;

    int b = 0x99991199;

    int *p1 = &b;

    char *p2 = (char *)&b;

   printf("p1+1 is %x,%x,%x\n",*(p1+!),p1[1],*p1+1);    //12345678,12345678,9999119a;

     printf("p2+1 is %x\n",p2[1]);      //  11  char型,p2=p[0] = 99(低八位),p[1]为11。

  注: *(p1+1) ===p1[1];    //此时[]为标签,不是数组。

     

  • 指针越界访问。

   ① 使用指针修改const修饰的值。

    eg:

      const int a= 10;
      int b = 20;

      printf("%x ",a);    //a = 14
      printf("%x ",b);    //14  可见连续声明的变量(同类型)二者之间相差为sizeof(int)。对int来说相差为1,即4bit。

      int *p = &b;

      p[1] = 30或*(p+1) = 30;    //该语句编译不报错,但是a输出的值仍是a,具体参考:https://blog.csdn.net/a3125504x/article/details/78835973

      printf("%x",p[1]);  

  • 指针逻辑操作符

    ①跟一个特殊值记性比较  0x0:地址的无效值,结束标志。

      if(p == 0x0)

        NULL

    ②指针必须是同类型的比较才有意义

    

Linux学习---指针运算、修饰符(const、volatile、typedef)及、运算符(++、--、+、-)的更多相关文章

  1. Vue – 基础学习(4):事件修饰符

    Vue – 基础学习(3):事件修饰符

  2. C++ 运算符 [] & *、操作符new 修饰符const inline virtual

    1. [] 这让我想到静态分配内存和动态分配内存,与数据名称无关 局部变量和临时变量会储存在静态缓存区,随着程序运行完而消亡(例如在循环体中定义的局部变量随着循环体结束,局部变量也会消亡). 内存泄漏 ...

  3. 关于STM32库中 __IO 修饰符(volatile修饰符,反复无常的意思)

    STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay;  这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO ...

  4. STM32库中 __IO 修饰符(volatile修饰符)

    STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO原 ...

  5. java学习(权限修饰符)

    Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类. ...

  6. Vue.js学习笔记之修饰符详解

    本篇将简单介绍常用的修饰符. 在上一篇中,介绍了 v-model 和 v-on 简单用法.除了常规用法,这些指令也支持特殊方式绑定方法,以修饰符的方式实现.通常都是在指令后面用小数点“.”连接修饰符名 ...

  7. C#深入学习:泛型修饰符in,out、逆变委托类型和协变委托类型

    在C#中,存在两个泛型修饰符:in和out,他们分别对应逆变委托和协变委托. 我们知道,在C#中要想将一个泛型对象转换为另一个泛型对象时,必须要将一个泛型对象拆箱,对元素进行显式或隐式转换后重新装箱. ...

  8. vue学习(六) 事件修饰符 stop prevent capture self once

    //html <div id="app"> <div @click="divHandler" style="height:150px ...

  9. Linux学习 - 数值运算

    1 declare 声明变量类型 declare [+/-] [选项] 变量名 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量声明为整数型 -x 将变量声明为环境变量(同export) ...

随机推荐

  1. redis 配置文件解释 以及集群部署

    redis是一款开源的.高性能的键-值存储(key-value store),和memcached类似,redis常被称作是一款key-value内存存储系统或者内存数据库,同时由于它支持丰富的数据结 ...

  2. GDI+_绘制QQ头像

    Public Sub I_touxiang(ByVal file As String, ByVal Graphics As Long, Width As Long, Height As Long, O ...

  3. yum管理工具

    yum:也是一个rpm包的管理工具,可以实现自动解决rpm包的依赖关系(自动安装依赖顺序进行rpm包的安装) 为何rpm包会有依赖关系? 制作rpm的人,在制作rpm包的时候,就将这个rpm的所依赖的 ...

  4. java 将mysql中Blob类型转为字符串或数字

    引入Blob类型貌似不行,不知道是版本问题还是java中的Blob类型为oracle,后来使用byte[]转换成功. public float byte2float(byte[] b) { if(b! ...

  5. Java Script 简介

    Java Script 简介 JavaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备.JavaScrip ...

  6. LeetCode至 少有 1 位重复的数字

    给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数. 示例 1: 输入:20 输出:1 解释:具有至少 1 位重复数字的正数(<= 20)只有 11 . 示例 2: 输入:10 ...

  7. CentOS7+CDH5.14.0安装CDH错误排查:该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系

    主机错误: 该主机与 Cloudera Manager Server 失去联系的时间过长. 该主机未与 Host Monitor 建立联系 解决办法: 首先查看该主机NTP服务是否启动:https:/ ...

  8. Vue --1

    1.2 vue.js库的基本使用 在github下载:https://github.com/vuejs/vue/releases 在官网下载地址: https://cn.vuejs.org/v2/gu ...

  9. git tag 查看标签列表、切换标签

    1.查看标签列表 git tag 2.切换标签(需要指定分支 test 为分支.v0.17.7 为标签版本) git checkout -b test v0.17.7

  10. kivy sdl2 - ImportError: DLL load failed: 找不到指定的模块。

    kivy version : windows:win python version:3.6 sdl2 - ImportError: DLL load failed: 找不到指定的模块. 运行以下dem ...