仅对于C++,您可以将参数作为参考
func() { Object* pNext; func1(pNext); } func1(Object*& pNext) { pNext = Segement->GetFirstPara(0); }
这里发生的是按值传递参数和通过引用传递之间的区别.C总是按值传递.为了获得值,该值必须是参考值(例如,Object**将Object*称为指针).C++添加了引用参数(由&表示).按值传递仅传递数据的副本,而不传递实际数据本身.这就是函数调用中使用的变量未在函数中更新的原因.
仅对于C++,您可以将参数作为参考
func() { Object* pNext; func1(pNext); } func1(Object*& pNext) { pNext = Segement->GetFirstPara(0); }
这里发生的是按值传递参数和通过引用传递之间的区别.C总是按值传递.为了获得值,该值必须是参考值(例如,Object**将Object*称为指针).C++添加了引用参数(由&表示).按值传递仅传递数据的副本,而不传递实际数据本身.这就是函数调用中使用的变量未在函数中更新的原因.
在c中,您需要:
func1(&pNext); func1(Object** pNext) { *pNext = ... }
在C++中
func1(pNext); func1(Object*& pNext) { pNext = ... }
在任何一种语言中,您的示例都会将未初始化的内容传递Object*
给它func1
,它会复制它,为副本分配值然后返回.请注意,原始的pNext永远不会被修改(如果您为变量使用不同的名称,这将有所帮助).
在两种语言中,如果需要传递引用而不是传递值,则需要显式传递引用.