C语言中的双返回

C语言中的双返回,c,C,可以用C语言返回两个变量吗 我想返回一个指针和一个字符串,这样我就可以在函数外部同时使用它们 这是用数组完成的吗?如果是,它将是什么类型的数组?无效?否,只能返回一个对象。但是,您可以返回一个struct类型的对象,并且可以将多个返回放入struct中: typedef struct return_type { void* pointer_; // You should, of course, use whatever the appropriate types char* st

可以用C语言返回两个变量吗

我想返回一个指针和一个字符串,这样我就可以在函数外部同时使用它们


这是用数组完成的吗?如果是,它将是什么类型的数组?无效?

否,只能返回一个对象。但是,您可以返回一个struct类型的对象,并且可以将多个返回放入struct中:

typedef struct return_type
{
    void* pointer_; // You should, of course, use whatever the appropriate types
    char* string_;  // are for the objects that you are trying to return.
};

return_type f();

不可以,只能返回一个对象。但是,您可以返回一个struct类型的对象,并且可以将多个返回放入struct中:

typedef struct return_type
{
    void* pointer_; // You should, of course, use whatever the appropriate types
    char* string_;  // are for the objects that you are trying to return.
};

return_type f();

您可以从函数返回一项,然后将指针作为要更改的参数。如果给您一个char*来返回字符串,并且您更改了它指向的位置,那么如果已经分配了,请不要忘记释放它!然后调用方也应该在指针的另一端看到一个已更改的值。您可以将指针作为函数的主返回值返回。

您可以从函数返回一项,然后将指针作为要更改的参数。如果给您一个char*来返回字符串,并且您更改了它指向的位置,那么如果已经分配了,请不要忘记释放它!然后调用方也应该在指针的另一端看到一个已更改的值。您可以返回指针作为函数的主返回值。

您可以这样做

void func(void **pVoid, char **szString)
{
    pVoid = 0x1234;
    szString = "Hello";
}

void* pVoid;
char* szString;
func(&pVoid, &szString);

你可以这样做

void func(void **pVoid, char **szString)
{
    pVoid = 0x1234;
    szString = "Hello";
}

void* pVoid;
char* szString;
func(&pVoid, &szString);
您有两个选择:

1创建一个结构并返回

2当参数使用指向要更改内容的指针时,您有两个选项:

1创建一个结构并返回


2由于参数使用指向您想要更改的内容的指针

您是否发现名称空间中存在任何潜在问题?@Scott:不,不。我的意思是,您不想实际命名结构return\u type;如果您有一个名为do_x的函数,那么您可以将返回类型结构命名为do_x_result或类似的名称。非常感谢。返回此值的函数的返回类型是什么?我是否可以创建一个,例如return_type*rt;rt->firstField=blah;rt->secondField=blahblah;在函数中,将返回类型设置为return_type*?在调用此函数时,我是否会创建一个返回类型的指针,例如返回类型*数据=函数返回结构?这似乎太过分了,需要很多复制品。Thanks@alJaree:为什么要返回返回类型*?只返回一个返回类型的对象;你可以像对待任何其他结构类型的对象一样对待它。我真的把自己和指针和结构搞混了。因此,如果它是一个基本的struct对象,我将按如下方式设置结构rs.firstField。但如果它是指向结构的指针,我会将其设置为rs->firstField?您是否发现名称空间中存在任何潜在问题?@Scott:不,不。我的意思是,您不想实际命名结构return\u type;如果您有一个名为do_x的函数,那么您可以将返回类型结构命名为do_x_result或类似的名称。非常感谢。返回此值的函数的返回类型是什么?我是否可以创建一个,例如return_type*rt;rt->firstField=blah;rt->secondField=blahblah;在函数中,将返回类型设置为return_type*?在调用此函数时,我是否会创建一个返回类型的指针,例如返回类型*数据=函数返回结构?这似乎太过分了,需要很多复制品。Thanks@alJaree:为什么要返回返回类型*?只返回一个返回类型的对象;你可以像对待任何其他结构类型的对象一样对待它。我真的把自己和指针和结构搞混了。因此,如果它是一个基本的struct对象,我将按如下方式设置结构rs.firstField。但是如果它是指向结构的指针,那么我就把它设置成RS-> Fieldfield。忘记了在赋值中引用参数。忘记了在赋值中引用参数。许多重复,在C和C++中,例如,看到已经有很多重复的C和C++,例如