inline void*&变量名 和 void**变量名

void*&p :先取P的地址,以P地址定义一个指针。该指针指向的是指针的地址。说明如下

int a = 5;
int b = &a;
int
&p = b;

复制代码
int*&p 赋值只能用指针变量b,不能为变量地址&a,否则编译不通过。(因为它要指向的是指针的地址,不是变量的地址)。赋值后 &p和&b 的地址是一样的。说明将指针b的地址赋值给了&p。那么直接用p代替b操作结果是一样。即p就是b(理解为变量名不同而已)。这不同一般性的指针变量引用。

void oper(Object i);
Object
n = new Object;
Object j = new Object;
Object
a = n; // 指针对象a 指向 n
oper(a); // 函数调用 传入指针a为参数
// 结果:a 还是指向了 n 地址
void oper(Object i)
{
// 相当于定义了一个Object
i = a 来代替对a的操作;
// 函数代码……
i = j;
// 函数代码……
}

复制代码
上面的调用函数中,i 和a是两个不同的指针对象。将 i = a 赋值后,他们指向了同一个地址,此时对 i 的操作就是对 a 的操作。如果 i = j 后,对 i 的操作完全不会影响 a 指针对象的数据。因为它指向了 j 地址。如果要想在函数内改变全局指针变量 a 指向别处的地址,那么就将函数参数设置为指向指针地址的变量。

void oper(Object& i);
Object
n = new Object;
Object j = new Object;
Object
a = n; // 指针对象a 指向 n
oper(a); // 函数调用 传入指针a为参数
// 结果:a 指向了 j 地址
void oper(Object& i)
{
// 相当于定义了一个Object
i = a 来代替对a的操作;
// 函数代码……
i = j;
// 函数代码……
}

复制代码
void**p :指向指针的指针

赞(0) 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

    暂无评论...