C语言轻松学习-12

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

#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
分享到:
赞(0)

请选择你看完该文章的感受:

9瞧一瞧 2扯淡 8学到了 1不懂 9正能量 1无聊

评论2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (选填)
  1. #0
    没了吗
    user2021-11-20 9:50:32回复
    • 如果以后不是学C++这门高级语言的话。其实这一章可以不用学了,可以直接学其他高级语言了,
      lla2021-11-20 9:53:56回复