美文网首页
指针的引用(代替二级指针)

指针的引用(代替二级指针)

作者: 贝克街的猫大哥呀 | 来源:发表于2017-08-28 15:35 被阅读0次

先来作一个测试

struct Teacher{

   char* name;

   int age;

};

void getTeacher(Teacher* p) {

         p->age = 60;

}

void main() {

   Teacher t1;

   t1.age = 1;

   Teacher* t = &t1;

   getTeacher(t);

   printf("%d",t->age);

   system("pause");

}

用上面的方案,将指针传入到一个方法,那个方法通过指针,是可以修改指针所指向的内容的!因此最后的输出为60,没有问题。

但我们在JNI开发中,常常会有一种情况,就是将没有赋值的一个指针,也就是空指针,传入了一个方法中。这是怎么回事?如下:

void getTeacher(Teacher **p) {

   Teacher *tmp = (Teacher*)malloc(sizeof(Teacher));

   tmp->age =320;

   *p = tmp;

}

void main() {

   Teacher *t = NULL;

   getTeacher(&t);

   printf("%d",t->age);

   system("pause");

}

在传入方法前,指针为空,然后把指针取地址,相当于一个二级指针,传到了方法,方法内生成了一个指针,然后将原指针赋值,最后输出320。 这是一种空指针的赋值方案。

也可以用指针的引用,来代替二级指针

//指针的引用,代替二级指针

//Teacher* &p = (Teacher * *p)

void getTeacher(Teacher* &p) {

   p = (Teacher*)malloc(sizeof(Teacher));

   p->age = 200;

}

void main() {

   Teacher *t = NULL;

   getTeacher(t);

   printf("%d",t->age);

   system("pause");

}

如上的用法,就是直接传了一个一级指针进去!其实参数是一级指针的引用!这样就完成了给指针赋值!很多库的用法都是这样完成的。最后输出200.

相关文章

  • 指针的引用(代替二级指针)

    先来作一个测试 struct Teacher{ char* name; int age;}; void getTe...

  • 2018-05-07

    引用 左值引用 右值引用 引用本质 引用指针 int & 引用整数 本质指针int && 引用整数 本质指针 ...

  • 二级指针

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

  • Go 语言学习笔记-指针、切片与结构体

    指针 指针就是地址。指针变量就是存储地址的变量 指针使用 &p : 引用*p : 解引用、间接引用 栈帧 用来给函...

  • C++ 指针与二维数组

    一级指针 二级指针

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • 02-C语言的指针

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

  • C++基本问题——指针与引用的区别

    指针与引用的区别 指针可以是空指针,但是引用不能是空引用。这就导致下面一个区别。 指针可能是非法的,引用总是合法的...

  • 关情纸尾---OC-内存管理

    一、引用计数器 二、野指针和空指针 三、set方法的内存管理 四、property的内存管理(代替oc对象的set...

  • * 与 & 以及二级指针

    *: 星号,用来声明指针的; &:连字号运算符,定义内存位置; 二级指针:指向指针的指针。 指针 指针是一个变量,...

网友评论

      本文标题:指针的引用(代替二级指针)

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