首页 > 编程技术 > C++指针参数传递
2020
03-26

C++指针参数传递

很久没有使用C++开发了,使用C++指针时遇到了一些问题,总结一下

int * p; // 指向整型的指针
int **p; // 指向指针的指针
int a;
int * p = &a; // 获取a的地址

在参数中传递指针要注意,如果仅是传递指针,那么在函数中修改指针的值,可能不会改变指针指向的对象。下面看三个例子:

void testFuncOne(MyPointer *p)
{
   DoSomething(p);
   p = new MyPointer();// 其它对象的指针 
}

比如上面例子,函数中传单指针,执行完testFunOne后,p指针没有指向新的对象

void testFuncTwo(MyPointer **p)
{
   DoSomething(p);
   *p = new MyPointer();// 其它对象的指针
}

第二个例子中,传递的是指向指针的指针,执行testFuncTwo后,指针指向新的对象,但是调用方式是testFuncTwo(&p)

void testFuncThree(MyPointer *&p)

{
   DoSomething(p);
   p = new MyPointer();// 其它对象的指针
}

第三个例子传递的是指针引用,实现的效果跟第二个例子是一样的,只是语法不同,传递的时候不传p的地址,而是传p本身。调用方式是testFuncThree(p),调用之后指针指向新的对象

最后编辑:
作者:freeman
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据