指针专题5-指针数组和二级指针(指向指针的指针)

1 指针数组

  如果一个数组中所有元素保存的都是指针,我们称他为指针数组。

  指针数组的定义形式:dataType *arrayName[lengt] 或者 dataType *(arrayName[lengt])

int a=1, b=34, c=100;
int *arr[3]={&a, &b, &c};    //定义一个指针数组
int **parr=arr;    //定义一个指向指针数组的指针

  这时,下面两列操作是等价的。

取a、b、c的地址 取a、b、c的值
arr[i] *arr[i]
*(parr+i) **(parr+i)

 

2 二级指针

int a=100;
int *p1=&a;  //定义指针p1指向a的地址  
int **p2=&p1;    //定义指针p2指向指针变量p1的地址
int ***p3=&p2;    //三级指针
printf("a=%d
",a );
printf("*p1=%d, p1%d
", *p1, p1);    //*p1=取a的值; p1=a的地址
printf("**p2=%d, *p2=%d, p2=%d",**p2, *p2, p2);    //**p2=a的值; *p2=指针变量p1的值(即a的地址); p2=指针变量p1的地址

 输出:

  a=100
  *p1=100, p1=6487676
  **p2=100, *p2=6487676, p2=6487672

原文地址:https://www.cnblogs.com/Mike2019/p/11813266.html