C 结构返回函数

C 结构返回函数,c,C,在C组件选择中,结构返回函数的好处是什么?例如: struct S { int a, b; } x; 为什么我可以将上面的结构指定为如下所示的函数,这样做有什么好处吗 extern struct S f(); /* Why is this neccesary? */ x = f(); /* Is this accurate */ 让我看看这些家伙。这只是一个函数,碰巧返回了一个结构。没什么比这更重要的了。如果看到函数返回一个int,您不会感到惊讶,为什么会在返回一个struct时感到惊

在C组件选择中,结构返回函数的好处是什么?例如:

struct S {
   int a, b;
} x;
为什么我可以将上面的结构指定为如下所示的函数,这样做有什么好处吗

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

让我看看这些家伙。

这只是一个函数,碰巧返回了一个
结构。没什么比这更重要的了。如果看到函数返回一个
int
,您不会感到惊讶,为什么会在返回一个struct时感到惊讶呢


另一方面,
extern
在这里是多余的,因为它是函数的默认存储类。

它只是一个碰巧返回
结构的函数。没什么比这更重要的了。如果看到函数返回一个
int
,您不会感到惊讶,为什么会在返回一个struct时感到惊讶呢


另一方面,
extern
在这里是多余的,因为这是函数的默认存储类。

如果你得到的是一个结构的副本而不是指向它的指针,你就知道你永远不必担心
free()
,或者是否存在一个线程向结构写入而另一个线程从结构读取的数据争用,或者函数返回的指针是否会因某些可能超出您控制范围的操作而无效。

如果您得到的是一个结构的副本而不是指向它的指针,您知道您永远不必担心
free()
ing它,或者是否存在一个线程向结构写入而另一个线程从结构读取的数据争用,或者函数返回的指针是否会因某些可能超出您控制范围的操作而无效。

这非常有用,这样您就可以从函数返回多个值

例如,您可以这样使用它

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
(这通常在头文件中完成)向前声明函数,以便其他函数知道其原型,即其参数和返回类型,即使函数本身在另一个文件中定义。

这非常有用,可以从函数返回多个值

例如,您可以这样使用它

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
(这通常在头文件中完成)进行正向声明,以便其他函数知道其原型,即其参数和返回类型,即使函数本身是在另一个文件中定义的。

这里也不清楚您是否在问……这里有一个类似的问题,用于定义希望返回多个变量的函数的签名。现在还不清楚您在问什么……这里有一个类似的问题,用于定义想要返回多个变量的函数的签名。