相关疑难解决方法(0)

从C中的函数返回`struct`

今天我教了几个朋友如何使用C structs.其中一个问你是否可以struct从一个函数返回一个函数,我回答说:"不!你会返回指向动态malloc编辑struct的指针."

来自主要使用C++的人,我期望无法struct按值返回s.在C++中,您可以operator =为对象重载并完全理解为具有按值返回对象的函数.但是,在C中,你没有那个选项,所以它让我思考编译器实际上在做什么.考虑以下:

struct MyObj{
    double x, y;
};

struct MyObj foo(){
    struct MyObj a;

    a.x = 10;
    a.y = 10;

    return a;
}        

int main () {

    struct MyObj a;

    a = foo();    // This DOES work
    struct b = a; // This does not work

    return 0;
}    
Run Code Online (Sandbox Code Playgroud)

我理解为什么struct b = a;不能工作 - 你不能operator =为你的数据类型重载.它是如何a = foo();编译罚款?这是否意味着什么struct b = …

c

153
推荐指数
6
解决办法
25万
查看次数

为什么C代码不返回结构?

虽然它非常方便,但我很少(如果有的话)遇到在C 中返回structs(或unions)的函数,无论它们是动态链接函数还是静态定义函数.
它们通过指针参数返回数据.

(Windows中的动态示例是GetSystemInfo.)

这背后的原因是什么?
是因为性能问题,ABI兼容性问题还是其他问题?

c return

18
推荐指数
4
解决办法
8828
查看次数

标签 统计

c ×2

return ×1