c++ - 作为指针传递的函数内部赋值?

标签 c++ function pointers parameters

ClassA* pa = NULL;
ClassA* pb = NULL;

void assignObject(ClassA* pa, ClassB* pb) 
{
  pa = new ClassA;
  pb = new ClassB;
}

函数执行后papb的值是多少?

编辑 如果 pa,pb 为 NULL,如何作为指针传递是返回

最佳答案

正如其他答案中所指出的那样 - 调用后两者仍为 NULL。但是,这个问题有两种可能的解决方案:

1) 引用文献

void assignObject(ClassA*& pa, ClassB*& pb)
{
    pa = new ClassA;
    pb = new ClassB;
}

ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(pa, pb); // both will be assigned as expected.

2) 指针

void assignObject(ClassA** pa, ClassB** pb)
{
    assert(pa != NULL); assert(pb != NULL);
    *pa = new ClassA;
    *pb = new ClassB;
}
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(&pa, &pb); // both will be assigned as expected.

大多数程序员可能会选择引用,因为这样他们就不需要断言任何东西(引用永远不会为 NULL)。

关于c++ - 作为指针传递的函数内部赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/416162/

相关文章:

c++ - 邻接表图形表示的实现

c# - C#未运行派生类函数

c - 如何在C中用数组填充结构的指针元素

C指针问题,取消引用崩溃

c++ - VS2010 中不同大小的 lambda 表达式?

C++访问数组元素

C++ 标准:ODR 和 constexpr std::string_view

c - 结构体函数的传递和返回

Javascript Date() 毫秒差不相加

ios - 从 'CGFloat *' 分配给 'float *'(又名 'int')的指针转换不兼容整数