C 二级指针理解

作者: Loofer | 来源:发表于2018-07-15 17:38 被阅读6次

示例代码

#include <studio.h>
#include <studlib.h>
void function(int** p)
{
      int i = 3;
      printf("i 的地址为%#x\n",&i);
      *p = &i;
}

main()
{
      int mainp;
      function(&mainp);
      printf("主函数中获取 i 的地址为%#x\n",mainp);
      printf("主函数中获取 i 的值为%d\n",*mainp);
      system("pause");
}

执行过程

1、int mainp 分配了一块内存空间


mainp分配内存空间

从左到右依次是 mainp 的内存地址,mainp 的内存空间

2、接着把 mainp 的地址传递给 function() 函数中 p 的值空间

mainp 地址传递给 p

3、在 function() 函数中 int i = 3i 分配了块内存空间

i的内存分配

4、接着 *p = &ip 的值是 0xff22,那么 *p 的值是 mainp 的值空间

赋值过程

5、*p = &i 整个过程

*p = &i

5、main() 方法中 printf("主函数中获取 i 的地址为%#x\n",mainp); 打印的是 mainp 的值所以输出的是0x22ff24,但是 printf("主函数中获取 i 的值为%d\n",*mainp) 打印的值确实 -2 ,原因是在 C 语言中函数执行完,局部变量就销毁了。

总结

p 取的是 p 的值空间,*p 取的是 p 的值空间中指向的地址的值空间,&p 取的是 p 自身的地址。相当于上述 &i 取的是 i 的地址

相关文章

  • C 二级指针理解

    示例代码 执行过程 1、int mainp 分配了一块内存空间 从左到右依次是 mainp 的内存地址,mainp...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • 二级指针

    关于二级指针,可以参考这篇文章[二级指针的作用详解] 所谓二级指针可以理解为:指向指针的指针函数通常会将参数拷贝一...

  • C/C++二级指针

    理解二级指针,先要理解指针假有定义: 那么:p:存放的是&a,根据表达式p = &a; 这个很好理解&p: 指针变...

  • JNI总结

    java调用c/c++ 在C中:JNIEnv 结构体指针别名env二级指针 在C++中:JNIEnv 是一个结构体...

  • C语言基础及指针④函数指针

    接续上篇C语言基础及指针③函数与二级指针 在上一篇中 , 我们学习了函数与二级指针 , 函数和java中的方法类似...

  • C语言学习笔记——指针(二级指针和n级指针)

    今天学习了C语言中的二级指针和n级指针,总结如下: 另外,二级指针也可通过一级指针实现: 具体两种方法的差别请看我...

  • ndk02_指针运算,函数参数与指针,数组指针,二级指针

    一、指针运算 二、数组与指针 三、指针和函数参数 四、指针数组 五、 二级指针 六、知识要点 1、C语言中的函数如...

  • 0x00 JNI预备知识

    1.JNI结构体指针及用法 在C中是二级指针,在C++中是一级指针。指向一堆定义好的函数(详情见oralcle官网...

网友评论

    本文标题:C 二级指针理解

    本文链接:https://www.haomeiwen.com/subject/hibppftx.html