繁体   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