几个星期以来,我一直在想这个问题,但找不到答案。

假设我们有以下代码:

typedef struct s_data
{
    int age;
    char *name;
} t_data;

int main()
{
    t_data someone;

    if ((foo(&someone)) != 0)
        printf("blablabla");

    //....

    return (0);
}

int foo(t_data *someone)
{
    // Get data from internal memory by example

    *someone = unjson("data.json");

    if (someone == null)
        return (-1);

    return (0);
}


因此,现在回到父级对象中,对结构进行了更新,但是如果它不是带有指针的结构,而是对象,则它如何工作?就像在C#中一样

我传递我的对象,定义someone = unjson("....");,该对象在子级而不是父级中更新。这对我来说很有意义,而且具有逻辑性,但是如何使它像我在C语言中为C#语言给出的示例一样工作?

也许这个问题很愚蠢,也许我没有在Google上搜索正确的关键词,但是我真的想知道我该怎么做。

感谢您的解释!

最佳答案

在方法中的参数之前添加ref关键字,这将通过引用发送与对象相同的对象。

     private int foo(ref myObjectType someone)
{
    // Get data from internal memory by example

    someone = unjson("data.json");

    if (someone == null)
        return (-1);

    return (0);
}


更多信息:

https://msdn.microsoft.com/en-us/library/14akc2c7.aspx

10-02 20:23