yes*_*aaj 4 c++ parameters pointers function
ClassA* pa = NULL;
ClassA* pb = NULL;
assignObject(ClassA* pa,ClassB* pb)
{
pa = new ClassA;
pb = new ClassB;
}
Run Code Online (Sandbox Code Playgroud)
执行函数后pa,pb的值是多少?
编辑如何传递如果指针是返回,如果pa,pb是NULL
Pau*_*ius 10
正如其他答案所指出的那样 - 在通话后两者仍然是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.
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
大多数程序员可能会选择引用,因为它们不需要断言任何东西(引用永远不能为NULL).