0

我正在学习 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

4

2 回答 2

3

通过引用将 myStruct 参数传递给 assignValue 函数,因此可以对其进行修改:

void assignValues(myStruct& myobj)
                         ^^^ pass by reference
{
    myobj.a = "foobar";
    myobj.b = "Foo Bar";
    myobj.c = 12;
    myobj.d = 15.223;
}
于 2012-11-18T10:04:38.853 回答
0

尽管您可以将指针传递给函数:

void assignValues(myStruct* myobj) //<---- pointer
{
    myobj->a = "foobar";
    myobj->b = "Foo Bar";
    myobj->c = 12;
    myobj->d = 15.223;
}
于 2012-11-18T10:09:05.480 回答