簡體   English   中英

結構返回功能

[英]Structure returning function

C組件選擇中,結構返回功能有什么好處? 例如:

struct S {
   int a, b;
} x;

為什么我可以將上面的結構分配為如下所示的函數,這樣做有什么好處?

extern struct S f(); /* Why is this neccesary? */
x = f(); /* Is this accurate */

睜開眼睛看着這些家伙。

它只是一個返回struct 沒有什么比這更重要了。 看到一個函數返回一個int你會不會感到驚訝,當一個返回一個結構時為什么會感到驚訝?

另外, extern在這里是多余的,因為這是函數的默認存儲類。

它非常有用,您可以從函數中返回多個值。

例如,您可以像這樣使用它

struct Point {
   int x;
   int y;
};

struct Point getMousePos()
{
    struct Point pos;
    pos.x = 567;
    pos.y = 343;
    return pos; 
}

int main()
{
    struct Point mouse_pos = getMousePos();
    printf("Mousepos %d,%d\n", mouse_pos.x, mouse_pos.y");   
}

該函數可以使用extern進行前向聲明(這通常在頭文件中完成),以便其他函數知道其原型,即其參數和返回類型,即使該函數本身在另一個文件中定義。

如果你得到一個結構的副本而不是指向它的指針,你知道你永遠不必擔心free()它,或者是否有任何數據爭用,其中一個線程正在寫入結構而另一個線程從中讀取,或者該函數返回的指針是否會被某些可能超出您控制范圍的操作無效。

暫無
暫無

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

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