[英]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:我期望輸出的值如下:foobar,Foo Bar,12、15.223
通過引用將myStruct參數傳遞給assignValue函數,因此可以對其進行修改:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.