c/c++语言开发共享将&var传递给* var和var传递给var有什么区别?

基本上,我想知道为什么这个(将list的内存地址作为参数传递):

void init_lista (elemPtr *list) { *list = NULL; } int main(){ elemPtr list; init_list(&list); //[...] } 

与此不同(仅传递列表的内容):

 void init_lista (elemPtr list) { list = NULL; } int main(){ elemPtr list; init_list(list); //[...] } 

OBS: elemPtr是结构的指针类型( typedef struct elem *elemPtr )。

我从&*理解的是,第一个将获得var的内存地址,后者将获得它引用的值。 通过这个概念,两个代码段应该是等价的,但第一个运行正常,而第二个编译,但给我一个运行时错误。 这是为什么?

    在这个function

     void init_lista (elemPtr list) { list = NULL; } 

    list是函数的局部变量。 你可以想象它

     void init_lista () { elemPtr list = NULL; } 

    退出函数后,变量将被销毁。 原始参数不会更改,因为它是按值传递给函数的。 因此该函数处理原始对象的副本。

    在这个function

     void init_lista (elemPtr *list) { *list = NULL; } 

    传递指针指向原始对象。 因此,将通过此指针更改参数,以便对原始对象进行更改。

      以上就是c/c++开发分享将&var传递给* var和var传递给var有什么区别?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522906.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐