我只是一个简单的问题。我正在尝试使用某些函数制作一个向量加法程序,但是当我快速运行它来检查数字时输出仍为0。
void input(struct vectors v1, struct vectors v2);
void addition (struct vectors v1, struct vectors v2);
struct vectors {
int x;
int y;
}v1, v2;
int main(int argc, const char * argv[]) {
input(v1, v2);
addition(v1, v2);
}
void input(struct vectors v1,struct vectors v2){
cout << "Input x and y componenets of vector 1" << endl;
cin >> v1.x;
cin >> v1.y;
cout << "Input x and y componenets of vector 2" << endl;
cin >> v2.x;
cin >> v2.y;
}
void addition ( vectors v1, vectors v2){
int xsum = v1.x +v2.x;
int ysum = v1.y +v2.y;
cout << "sum of the x variables is " << xsum << endl << "sum of the y variables is " << ysum <<endl;
}
答案 0 :(得分:2)
在函数input
中,您只修改输入参数的副本。要查看调用函数中可见的更改,请通过引用传递参数。
void input(struct vectors& v1,struct vectors& v2){
cout << "Input x and y componenets of vector 1" << endl;
cin >> v1.x;
cin >> v1.y;
cout << "Input x and y componenets of vector 2" << endl;
cin >> v2.x;
cin >> v2.y;
}
此外,由于您使用的是C++
,因此您可以使用:
void input(vectors& v1, vectors& v2){
答案 1 :(得分:0)
目前,您正在按值传递结构,因此当您调用该函数时,会生成结构的副本,并且在该函数中您只是修改副本。相反,通过引用传递:
void input( vectors& v1, vectors& v2 ) {
另外,在另一个函数中,为避免进行不必要的复制,可以通过常量引用传递结构:
void addition( const vectors& v1, const vectors& v2 ) {