美文网首页
指针常见操作(一)

指针常见操作(一)

作者: qianranow | 来源:发表于2018-04-24 11:37 被阅读45次

    0. 指针和数组


    • 通过 指针 保存 数组变量地址
      int values[] = {1, 3, 5, 7, 9};
      int *valuesP = values;
      printf("%p\n", values);
      printf("%p\n", &values);
      printf("%p\n", &values[0]);
      printf("%p\n", valuesP);
      
    • 操作
      • 通过 下标 操作元素
        int values[] = {1, 3, 5, 7, 9};
        int *valuesP = values;
        printf("%i\n", valuesP[0]);
        valuesP[1] = 66;
        printf("%i\n", values[1]);
        
      • 通过 地址 操作元素
        int values[] = {1, 3, 5, 7, 9};
        int *valuesP = values;
        printf("%i\n", *valuesP);
        // 指针 + 1,其实是加上指针类型所占用的字节长度
        *(valuesP + 1) = 66;
        printf("%i\n", values[1]);
        // 下标[指针变量]
        printf("%i\n", 4[valuesP]);
        

    1. 指针和字符串


    • 通过 指针 保存 字符串,本质就是保存字符串第 0 个元素的 地址
      char *str = "wxx";
      printf("%s\n", str);
      
    • 特性
      1. 通过数组保存字符串:字符串存储在 栈 中;字符串可以修改
         char str[] = "wxx";
         char strOne[] = "wxx";
         printf("str = %p, strOne = %p\n", str, strOne);
      
      2. 通过指针保存字符串:字符串存储在 常量区 中;字符串不可以修改
         char *name = "qtt";
         char *nameOne = "qtt";
         printf("name = %p, nameOne = %p\n", name, nameOne);
      

    2. 指针数组


    • 定义:数组元素地址
      格式:指针类型 数组名称[元素个数]
      char *names[4] = {
          "wxx",
          "qtt",
          "xdy",
          "xfq"
      };
      for (int i = 0; i < 4; i++) {
        printf("names[%i] = %s\n", i , names[i]);
      }
      
      int name[] = {1, 2, 3, 4};
      int name1[] = {5, 6, 7, 8};
      int name2[] = {9, 10, 11, 12};
      int name3[] = {13, 14, 15, 16};
      int *names[4] = {
        name,
        name1,
        name2,
        name3
      };
      printf("%i\n", names[3][3]);
      

    相关文章

      网友评论

          本文标题:指针常见操作(一)

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