【发布时间】:2021-01-29 17:45:25
【问题描述】:
struct rec {
int length;
int breath;
};
int area(rec objrec1) {
objrec1.length ++;
//objrec1.breath;
//int result= objrec1.length++ * objrec1.breath;
return(objrec1.length++ * objrec1.breath);
//return(result);
}
int main() {
rec objrec = { 10,5 }; // create object to access struct
int arearesult;
arearesult = area(objrec); // we pass the whole struct into the parameter
cout << arearesult << endl;
}
我的问题是,如果实际参数没有对形式参数进行更改,那么返回主“arearesult”时长度(++)的增量如何影响结果,使答案为 55 而不是 50。因为我在想,如果我将长度增加 1 使其变为 11,但是当它到达 main() 时,它将变为无效并返回 10,因为实际参数和形式参数中的长度不一样。谢谢
【问题讨论】:
-
你通过值传递
objrec并将返回值分配给areresult并打印它的值,这是两个不同的变量/对象 -
但是
objrec不会改变值。 -
目前还不清楚你认为会变成“无效”和“回头”的“它”是什么。函数正在修改参数,但参数是
objrec的副本。它的工作原理与您直接传递int完全相同。 -
您可能想投资一个好的C++ Book。它涵盖了这方面以及该语言的许多其他方面。
标签: c++ function struct pass-by-reference pass-by-value