我正在学习C ++中的结构类型,我试图编写一个可以改变结构类型变量成员值的函数。 但是,它产生了意想不到的输出,我无法弄清楚为什么会发生这种情况。 / 用于测试结构类型的程序 /
#include <iostream>
#include <cstring>
using namespace std;
struct myStruct
{
string a;
string b;
int c;
float d;
};
void assignValues(myStruct myobj)
{
myobj.a = "foobar";
myobj.b = "Foo Bar";
myobj.c = 12;
myobj.d = 15.223;
}
int main()
{
myStruct x;
cout << x.a <<endl;
//x.a = "Hello world";
//x.b = "This is C++";
//x.c = 10;
//x.d = 13.1332;
assignValues(x);
cout << x.a<<endl;
cout << x.b << endl;
cout << x.c << endl;
cout << x.d << endl;
}
如果我使用单独的赋值语句(我在代码中注释掉了)而不是assignValues()函数,我得到了预期的输出。
PS:我对输出的预期值如下: foobar的, Foo Bar, 12, 15.223
答案 0 :(得分:3)
通过引用assignValue函数传递myStruct参数,因此可以修改它:
void assignValues(myStruct& myobj)
^^^ pass by reference
{
myobj.a = "foobar";
myobj.b = "Foo Bar";
myobj.c = 12;
myobj.d = 15.223;
}
答案 1 :(得分:0)
虽然您可以将指针传递给函数:
void assignValues(myStruct* myobj) //<---- pointer
{
myobj->a = "foobar";
myobj->b = "Foo Bar";
myobj->c = 12;
myobj->d = 15.223;
}