【发布时间】:2021-04-25 21:18:50
【问题描述】:
所以我目前正在学习一门名为数据结构和算法的课程,在第一堂课中,我遇到了一个我无法完全回答的问题。老师试图通过以下方式展示使用调用的价值值和引用调用。他正在将一个数据结构传递给一个打印数据结构地址的函数。
代码基本上是这样的:
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() 打印的地址?
【问题讨论】:
-
您还必须显示
main,它显示了调用这两个函数的顺序,但您可能有兴趣了解stack frame 的工作原理,这将解释为什么一个地址较低比另一个。 -
“他正在将一个数据结构传递给一个打印数据结构地址的函数”这里应该更精确:一个数据结构的实例(!)在这里传递(通过值和通过引用)。
-
函数的调用顺序如下: Exempelstruct s; skrivAdresser1(s); skrivAdresser2(s);抱歉忘记包括在内。
-
也许只是为了清楚起见:请同时提供 writeAdresses() 函数!
-
也许这是在回答你的问题:stackoverflow.com/questions/4560720/…
标签: c++ call-by-value