指针

作者: qianranow | 来源:发表于2018-04-24 08:33 被阅读32次

    0. 概念


    • 理解:专门用来 保存地址 的,占用 8 个字节
      int main() {
        int a = 10;
        int *ap = &a;
        printf("%p\n", &a);
        printf("%p\n", ap);
        return 0;
      }
      

    1. 定义


    • 形式
      格式:数据类型 *变量名称
      1. 数据类型:用来说明指针变量能够保存 什么类型的变量 的地址;
                 当用指针去取值的时候,系统会自动根据指针的类型来确定应该取多少个字节中的值
      2. *:没有任何特殊含义,仅仅是为了标示这是一个指针变量
      3. 变量名称:用于区分不同的变量
      
      int num = 10;
      // 将 num 的地址存储到 p 这个指针中
      int *p = #
      printf("%p\n", &num);
      printf("%p\n", p);
      // 指针变量前的 * 号代表访问指针变量指向的那一块存储空间
      *p = 55;
      printf("num = %i\n", num);
      
    • 多级指针
      1. 定义
         (1) 拷贝需要指向的变量的数据类型和变量名称
         (2) 在数据类型和变量名称之间加上一颗星
         (3) 修改变量名称
      2. 访问
         通过几颗星来定义,就通过几颗星来访问
      3. 作用
         用指针来保存指向其它变量的指针的地址
      
      char c = 'a';
      char *cp = &c;
      char **cpp = &cp;
      char ***cppp = &cpp;  
      printf("%c\n", c);
      printf("%c\n", *cp);
      printf("%c\n", **cpp);
      printf("%c\n", ***cppp);
      

    2. 作用


    • 方式:可以通过 指针访问 地址,进行 相关操作

    指针.png

    3. 注意


    • 不要访问野指针,可以赋值为 NULL
    • 指针只能保存地址
    • 指针的指向可以修改
      int a = 66;
      int b = 88;
      // p 保存 变量 a 地址
      int *p = &a;
      *p = 88;
      // p 保存 变量 b 地址
      p = &b;
      *p = 66;
      printf("%i\n", a);
      printf("%i\n", b);
      
    • 同一个变量可以有 多个指针 指向
      int num = 10;
      int *p = #
      *p = 66;
      int *pOne = p;
      *pOne = 88;
      printf("%i\n", num);
      
    • 指针类型是什么类型,就只能指向什么类型的变量
      int num = 10;
      char charValue = 'l';
      double doubleValue = 9.9;
      int *p = #
      char *pOne = &charValue;
      double *pTwo = &doubleValue;
      

    相关文章

      网友评论

          本文标题:指针

          本文链接:https://www.haomeiwen.com/subject/nurdlftx.html