zoukankan      html  css  js  c++  java
  • 在子函数中,利用一级指针和二级指针动态创建空间

    #include <stdio.h>    
    void changeAddress(int** value);    
    int main() {    
      int arr[] = {1, 2, 3};    
      int* p = arr;    
      // 改变之前 p 的地址    
      printf("%p
    ", p);    
      // q 用来保存改变之前 p 的地址    
      int* q = p;    
      changeAddress(&p);    
      // 改变之后 p 的地址    
      printf("%p
    ", p);    
      // 地址改变的差值    
      printf("%lu
    ", p - q);                                                                                                               
      return 0;    
    }    
    void changeAddress(int** value) {    
      *value += sizeof(int);    
    }    

    效果图

     没错, 如果说一级指针是用于对数据的更新, 那么二级指针就是用于对数据地址的更新. 以此类推, 三级指针就是对数据地址的地址的更新…

    原文链接是:https://blog.csdn.net/qq_42957923/article/details/86927786

    这里有个原创,然你感受一下关联的一个一级指针和二级指针。下图左边是代码,右边是一级指针和二级指针的值。

    int a; //a是一个int类型的变量,它的值是一个整数
    int *pa = &a; //pa 是一个int *类型的变量,它的值是一个int型变量的地址
    int **ppa = &pa; //ppa是一个int **型的变量,它的值是一个int *型变量的地址 

    通过打印出,一维指针和二维指针,我们可以看到这里面的所有的值的变化,通过二维指针可以修改这个二维指针指向的一维指针所指向的地址。这就是精华所在了。定义二维指针的时候,我们需要明确一点就是,这个定义的二维指针必须要指向一维指针。

  • 相关阅读:
    [NOIP2015] 子串 题解
    [NOIP2011] 聪明的质检员 题解
    二进制的一些概念
    [NOIP2012] 借教室 题解
    [POJ3764] The XOR Longest Path 题解
    关于本博客
    【SC-MY限定】让填写问卷星成为自动化!
    JZOJ5833 永恒
    九校联考-DL24凉心模拟Day2总结
    【简解】SP7556 Stock Charts
  • 原文地址:https://www.cnblogs.com/littleswan/p/12165627.html
Copyright © 2011-2022 走看看