接下来,我们继续来学习,指向指针的指针,这粗略地看起来有点绕,其实理清逻辑也是很容易的,因为是指向指针的指针,所以我们在定义时,要用到两个“*”(星号),具体操作代码如下:

#include<stdio.h>
int main(void)
{
  int a=23,*z,**s;
  z=&a;
  *z=223;
  s=&z;
  printf("   a=%d &a=%d \n  *z=%d  z=%d &z=%d \n **s=%d *s=%d  s=%d &s=%d \n",a,&a,*z,z,&z,**s,*s,s,&s);
  **s=204;
  printf("\n   a=%d &a=%d \n  *z=%d  z=%d &z=%d \n **s=%d *s=%d  s=%d &s=%d \n",a,&a,*z,z,&z,**s,*s,s,&s);
}

 

代码调试截图如下:

根据上方代码和下方调试截图,我们进行一些分析,

1.“a”是一个普通(整数类型)变量“z”是一个(整数类型的)指针,“s”是一个指向(整数类型的)指针的(整数类型的)指针

2.通过 z=&a,令变量a的地址赋值给指针z,(说明 现在 z这个内存区域里面存放的是变量a的地址)

3.*z=223;,利用指向变量a的指针z进行数据修改,将223赋值给内存地址为z的内存中

4.再通过 s=&z,令指针z的地址赋值给指针 s (说明 s这个内存区域里面存放的是指针z的地址)

5.分别输出,变量a的数据,变量a的内存地址,访问内存地址为z中的数据,a的内存地址,本指针所占的内存地址,**s意思是 访问内存地址为*s中的数据,*s意思是 访问内存地址为s中的数据,s意思是 指针z所占的内存地址,&s本指针所占的内存地址

6.将204赋值到内存地址为 *s(而*s意思是 访问内存地址为s中的数据)-----总的来说,就是间接的访问内存地址为  s或z或&a
7.经过**s=204;,之后再次输出

    内容分页 1 2 3 4 5
未经授权不得转载,转载时请注明出处。