首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按值调用与按引用调用C++地址了解

问按值调用与按引用调用C++地址了解
EN

Stack Overflow用户
提问于 2021-01-21 20:41:41
回答 2查看 80关注 0票数 1

所以我现在正在选修一门名为“数据结构和算法”的课程,在第一节课上,我遇到了一个我无法完全理解的问题。教师正在尝试演示使用按值调用和按引用调用的价值。他正在将一个数据结构传递给一个打印数据结构地址的函数。

代码基本上是这样的:

代码语言:javascript
复制
struct Exempelstruct{
    int m_intValue1;
    int m_intValue2;
    float m_array[1000];
};

void skrivAdresser1(Exempelstruct theStruct){
    writeAdresses( theStruct );
}
//and
void skrivAdresser2(const Exempelstruct &theStruct){
    writeAdresses( theStruct );
}

问题是为什么skrivAdresser1()函数中的地址比skrivAdresser2()打印的地址低

EN

回答 2

Stack Overflow用户

发布于 2021-01-21 21:25:22

skrivAddresser1中的结构是稍后构造的,而skrivAddresser2中的结构与之前创建的main中的结构相同。原因之前调用了main。堆栈变量的规则是稍后创建较低的地址。因此,前面在main中调用哪一个并不重要,因为skrivAddress2不会创建新对象。并且原始对象总是在调用skrivAddress函数之前创建的。

票数 1
EN

Stack Overflow用户

发布于 2021-01-21 21:25:15

基本上,您需要研究按值调用和按引用调用的工作原理。

在按值调用中,函数将实参的实际值复制到函数的形参中。

在call by reference中,实际值通过&传递,因此它必须与原始值相同。

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

https://stackoverflow.com/questions/65827671

复制
相关文章

相似问题

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