使用函数操作结构数据类型的值

Manipulating values of struct data type with a function

本文关键字:数据类型 结构 操作 函数      更新时间:2023-10-16

我正在学习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:我期望的输出值如下:福巴,福吧,12,15.223

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

void assignValues(myStruct& myobj)
                         ^^^ pass by reference
{
    myobj.a = "foobar";
    myobj.b = "Foo Bar";
    myobj.c = 12;
    myobj.d = 15.223;
}

虽然你可以传递一个指向函数的指针:

void assignValues(myStruct* myobj) //<---- pointer
{
    myobj->a = "foobar";
    myobj->b = "Foo Bar";
    myobj->c = 12;
    myobj->d = 15.223;
}