使用函数操作结构数据类型的值
Manipulating values of struct data type with a function
我正在学习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;
}
相关文章:
- C++ - 使用结构数据类型将单词中的单个小写字符更改为大写,反之亦然
- 在结构数据类型中更改每个字符的 ASCII 值
- C++ - 检查结构数据类型中的单词是否为回文
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 将结构数据类型传递给 C++ 中的命名管道
- 结构内具有更多数据类型的单个链表
- 具有灵活大小的结构的 MPI 派生数据类型
- 从保存变量数据类型的数据结构中检索值,而不指定返回类型
- 将结构化数据类型从Fortran传递到C
- 数据结构 - 摘要数据类型(ADT)与具体数据类型(CDT)
- 抽象数据类型(ADT)和数据结构之间有什么区别
- 数据类型为结构的链表
- C++ 从文本文件数据类型读取为结构,并将数据存储在列表的向量中
- 静态数据类型(结构)的组织
- 使用函数操作结构数据类型的值
- 由INT数据类型(低,高)结构表示的双数据类型
- 使用并集(封装在结构中)来绕过氖数据类型的转换
- 结构的大小如何随着不同的数据类型而变化
- 从较大的数据类型(结构)转换为较小的数据类型
- 何时使用 std::complex<long double> vs. 自己的复杂数据类型(结构等)