很久没有使用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),调用之后指针指向新的对象
- 本文固定链接: https://freemanapp.com/zh/?p=780
- 转载请注明: freeman 于 FreemanApp 发表