如何解决按值调用VS按引用调用C++地址理解
所以我目前正在学习一门名为数据结构和算法的课程,对于第一节课,我遇到了一个问题,我无法完全回答。老师试图展示使用调用的价值value 和 call by reference。他正在将一个数据结构传递给一个打印数据结构地址的函数。
代码基本上是这样的:
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()
打印的地址?
解决方法
skrivAddresser1 中的结构体在后面构造,而 skrivAddresser2 中的结构体与之前创建的 main 中的结构体相同。原因主要提前调用。堆栈变量的规则是稍后创建地址较低。因此,您在 main 中较早调用哪一个并不重要,因为 skrivAddress2 不会创建新对象。并且原始对象总是在调用 skrivAddress 函数之前创建。
,基本上,您需要研究按值调用和按引用调用的工作原理。
在按值调用中,函数复制参数的实际值 到函数的形参中。所以地址是 形式参数显然会与实际不同 值(无论地址是否为空,它都可能更大或更小)。
在引用调用中,实际值通过&
传递,所以它有
与原始值相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。