【发布时间】:2015-10-25 15:56:38
【问题描述】:
我对结构和用户定义的数据类型完全陌生,我试图创建一个返回结构的函数:
评论突出了问题:
#include <iostream>
using namespace std;
struct num {
int n[2];
};
num func( num x, int a, int b) {
x.n[0] = a+b;
x.n[1] = a*b;
return x;
}
int main() {
int x,y;
num s1;
cout << "enter: ";
cin >> x >> y;
func(s1,x,y);
cout << s1.n[0] << "\n" << s1.n[1]; // THIS GIVES ERROR
cout << func(s1,x,y).n[0] << "\n" << func(s1,x,y).n[1]; // THIS DOENST GIVE ERROR
return 0;
}
我知道第二种方法有意义并返回结构变量。然后放一个点地址结构的内部变量。
但我不明白为什么第一种方法会失败,或者给出奇怪的输出。该函数已经完成了它的工作,即创建了s1.n[0] = x + y 和s1.n[1] = x*y
现在,打印s1.n[0] 应该只打印x + y。我们如何检查和纠正函数的内部运作?
【问题讨论】:
-
究竟是哪个错误?请照常提供minimal reproducible example。
-
@πάνταῥεῖ:问题显而易见。而且,好吧,无论如何,这是一个 MCVE。