• 指针和数组


    基本类型指针:  

      基本概念

          int i=10;
          int *p = &i; //等价于 int *p; p = &i;

      详解这两部操作:

          1)、p存放了i的地址,所以我们说p指向了i
          2)、p和i是完全不同的两个变量,修改其中的任意一个变量的值,不会影响另一变量的值
          3)、p指向i,*p就是i变量本身。更形象的说所有出现*p的地方都可以换成i,所有出现i的地方都可以换成*p

      总结:

             1、 如何一个指针变量(假定为p)存放了某个普通变量(假定为i)的地址,
             那我们就可以说:“p指向了i”, 但p与i是两个不同的变量, 修改p的值不影响i的值,修改i的值不影响p的值.
           2、 *p等价于i 或者说*p可以与i在任何地方互换
           3、 如果一个指针变量指向了某个普通变量,则*指针变量 就完全等价于 该普通变量

      注意:

          指针变量也是变量,只不过它存放的不能是内存单元的内容,只能存放内存单元的地址
          普通变量前不能加*
          常量和表达式前不能加&


       如何通过被调函数修改主调函数中普通变量的值:

          Ⅰ 实参为相关变量的地址
          Ⅱ 形参为以该变量的类型为类型的指针变量
          Ⅲ 在被调函数中通过 *形参变量名 的方式就可以修改主函数相关变量的值

      

    指针和数组:   

      指针 和 一维数组:  

         数组名: 

          一维数组名是个指针常量,它存放的是一维数组第一个元素的地址,它的值不能被改变
          一维数组名指向的是数组的第一个元素


          下标和指针的关系:

            a[i] <<==>> *(a+i)

           假设指针变量的名字为p, p+i的值是p+i*(p所指向的变量所占的字节数)

      指针变量的运算:

        指针变量不能相加,不能相乘,不能相除, 如果两指针变量属于同一数组,则可以相减

        指针变量占4个字节

        指针变量可以加减一整数,前提是最终结果不能超过指针允许指向的范围
          p+i的值是p+i*(p所指向的变量所占的字节数)
          p-i的值是p-i*(p所指向的变量所占的字节数)
          p++ <==> p+1
          p-- <==> p-1

          


      举例:

        如何通过被调函数修改主调函数中一维数组的内容【如何界定一维数组】
        两个参数:
          存放数组首元素的指针变量
          存放数组元素长度的整型变量

      

  • 相关阅读:
    npx vs npm
    RubyGem镜像/ruby国内镜像
    IOS开发依赖管理工具CocoaPods
    alpine linux
    阿里妈妈图标库
    java应用系统运行速度慢的解决方法
    jvm程序执行慢诊断手册
    js强制不使用“兼容性视图”
    java.lang.NumberFormatException: Infinite or NaN
    ALTER添加列后,立即UPDATE该列会报错
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/10123494.html
Copyright © 2020-2023  润新知