ClassA* pa = NULL;
ClassA* pb = NULL;
void assignObject(ClassA* pa, ClassB* pb)
{
pa = new ClassA;
pb = new ClassB;
}
函数执行后pa
和pb
的值是多少?
编辑 如果 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/