簡體   English   中英

在c中返回結構值的getter函數

[英]Getter function to return values of a struct in c

我正在練習 c,我想返回結構的數據以在其他位置訪問它。

假設我有這樣的事情:

typedef struct
{
    int8    x;    
    u64     y;     
    u32     z;   
} myData_t;


myData_t myData_g;


/*Setter*/
void WritemyData(const myData_t* data)
{
    myData_g = *data;
}

如何返回存儲在全局變量中的數據以在其他位置讀取。 我可以不只是做類似的事情:

/*Getter*/
myData_t GettmyData(void)
{
    return myData_g;
}

將感謝任何信息!

首先,對於這樣的事情,請考慮通過添加static myData_t myData_g; . 現在,此 .c 文件之外的任何人都無法有意/無意地訪問它。

至於您的函數GettmyData ,它將正常工作。 但是,按值傳遞/返回結構被認為是不好的做法,因為它涉及在堆棧上制作結構的完整副本,這可能會很慢並且暫時占用不必要的內存。

這可能是更好的主意:

void get_my_data (myData_t* obj)
{
  *obj = myData_g;
}

在這里,您必須記錄調用方應在調用方分配obj指向的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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