簡體   English   中英

用函數處理結構數據類型的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM