在子函数中,利用一级指针和二级指针动态创建空间

#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 *型变量的地址 

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

原文地址:https://www.cnblogs.com/littleswan/p/12165627.html