Управление значениями типа данных struct с помощью функции

Я изучаю типы структур в 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

Решение

Передайте аргумент myStruct по ссылке в функцию assignValue, чтобы его можно было изменить:

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

Другие решения

Хотя вы можете передать указатель на функцию:

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector