gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:31 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com