当前位置:  开发笔记 > 编程语言 > 正文

在下面的例子中,使用C时pNext指针会是什么?

如何解决《在下面的例子中,使用C时pNext指针会是什么?》经验,为你挑选了2个好方法。

仅对于C++,您可以将参数作为参考

func()
{
    Object* pNext;
    func1(pNext);
}

func1(Object*& pNext)
{
    pNext = Segement->GetFirstPara(0);
}

这里发生的是按值传递参数和通过引用传递之间的区别.C总是按值传递.为了获得值,该值必须是参考值(例如,Object**将Object*称为指针).C++添加了引用参数(由&表示).按值传递仅传递数据的副本,而不传递实际数据本身.这就是函数调用中使用的变量未在函数中更新的原因.



1> Diastrophism..:

仅对于C++,您可以将参数作为参考

func()
{
    Object* pNext;
    func1(pNext);
}

func1(Object*& pNext)
{
    pNext = Segement->GetFirstPara(0);
}

这里发生的是按值传递参数和通过引用传递之间的区别.C总是按值传递.为了获得值,该值必须是参考值(例如,Object**将Object*称为指针).C++添加了引用参数(由&表示).按值传递仅传递数据的副本,而不传递实际数据本身.这就是函数调用中使用的变量未在函数中更新的原因.



2> ejgottl..:

在c中,您需要:

func1(&pNext);
func1(Object** pNext) { *pNext = ... }

在C++中

func1(pNext);
func1(Object*& pNext) { pNext = ... }

在任何一种语言中,您的示例都会将未初始化的内容传递Object*给它func1,它会复制它,为副本分配值然后返回.请注意,原始的pNext永远不会被修改(如果您为变量使用不同的名称,这将有所帮助).

在两种语言中,如果需要传递引用而不是传递值,则需要显式传递引用.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有