地址概念:内存基本单元是一个字节,一个字节8个位。在定义变量的时候,如int a=10;系统为变量a分配2个字节空间:1000~1001,并在1001~1002中存有数据10。内存中没有变量a,只有1000~1001这个地址,所以使用a的时候,拿出这个地址中的值就行了。

    寻址方式:分两种

      1、直接寻址:

      如printf("%d",a);系统找到1000~1001这个地址,取出其中存的值。

      2、间接寻址(指针):

      在一个新的地址2010~2011中存放a的起始地址1000,使用a的时候,在2010中取出a的地址1000,再从1000中取出a的值。

  

    指针类型:

      1、变量指针:

      就是一个变量的地址,a的指针就是1000。值是地址。

      2、指针变量:

      全名是指向变量的指针变量。一个变量专门用来存放另一个变量的地址(即指针),则这个变量称为指针变量。如定义一个变量ap=2010,则ap就是一个指针变量。

      值是指针。(我们需要理解的是指针变量)

    

    *运算和&运算:

      在定义指针变量的时候需要用到*符号:

        int a;int *ap;

        a=10;ap=&a;//&是取地址运算,将a的地址1000取出,赋值给指针变量

        a=*ap;//*是指针运算符(我理解是取值运算符),先取出a变量存的值1000,再取出地址为1000的值,将这个值赋值给变量a。

      总结:*ap==a;

          &*ap==&a;

          *&a==a;

          (*ap)++==a++;

    指向数组的指针变量:    

      数组的指针就是数组的起始地址;用一个变量来存放一个数组的起始地址,这个变量就是指向数组的指针变量。

      int a[10];int *app;//定义

      app=&a[0];app=a;//赋值,通常用后面一种

        总结:app=a;

           app+i==a+i//就是a[i]的地址

           *(app+i)==*(a+i)//对应的值

           数组指针变量可以带下标,app[i]==*(app+i)

      

          

最新文章

  1. beat your own python env
  2. linux中终端控制键Ctrl+C,Ctrl+Z,Ctrl+D的使用场合
  3. 网上收集的以及自己总结的iOS开发技巧
  4. redis的备份
  5. 【转载】存储scale-up和scalce-out架构
  6. Raspberry Pi3 ~ 安装samba服务
  7. 解决安装包在win7,win8系统下安装后运行没有管理员权限
  8. Object instanceof Function和Function instanceof Object
  9. Python日期操作
  10. db2备份还原
  11. java----DOS命令
  12. java 面向对象内部类
  13. KindEditor echarts
  14. Error:Makefile:452: target 'config' given more than once in the same rule
  15. ES6之数组操作
  16. [算法]用java实现0-1背包和部分背包问题
  17. php快速上手总结
  18. Android笔记一.深入理解Intent和IntentFilters(一)
  19. SqlServer 如何知道是否发生了索引碎片
  20. LightOJ 1070 - Algebraic Problem 推导+矩阵快速幂

热门文章

  1. spark streaming - kafka updateStateByKey 统计用户消费金额
  2. 浅谈JavaScript计时器
  3. mybatis的xml中特殊转义字符和模糊查询like的写法
  4. qlserver、Mysql、Oracle三种数据库的优缺点总结
  5. linux计划任务运行php文件的方法
  6. jeditable参数详解
  7. SELECT INTO和INSERT INTO SELECT
  8. python 读取全国城市aqi数据,差值生成png图片
  9. java继承关系中成员变量,构造方法,成员方法的关系
  10. PHP使用PHPExcel删除Excel单元格指定列的方法是怎样