首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构是如何通过值传递的?

结构是如何通过值传递的?
EN

Stack Overflow用户
提问于 2012-09-28 17:28:43
回答 2查看 898关注 0票数 3

David的“Objective for Java程序员,Part 1”介绍说:

与总是通过引用传递的对象不同,结构通常是通过值传递的。

我对目标C(来自C++)非常陌生,所以我很难理解这一点。在C++中,我可以通过指针或引用传递结构,但不能通过值传递(可能是因为它效率很低)。

目标C是如何实现这一目标的?它真的推动所有的结构成员,一个一个,以一种堆栈一样的方式?

如果结构是由大型/复杂对象组成的,会发生什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 17:32:00

是的,它复制了整个结构,这个结构被传递给调用函数,任何修改都不会影响原来的结构。而缺点当然是因为它速度慢,但也消耗了两倍的空间。

票数 5
EN

Stack Overflow用户

发布于 2012-09-28 17:36:00

它将所有结构成员复制到堆栈中。请记住,结构中的复杂对象是由指向它的指针存储的,所以当您复制结构时,就有了指向复杂类型的复制和点的副本。当然,指针的副本指向内存中与原始对象相同的位置,因此您可以对原始对象执行操作。

当您拥有原始类型和原始复杂对象的副本时,这种方法会导致不可维护的混乱,即使您现在知道自己在做什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12644673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档