Двойной возврат в C - PullRequest
       2

Двойной возврат в C

1 голос
/ 13 февраля 2011

Можно ли вернуть две переменные в C?

Я хотел бы вернуть указатель, а также строку, чтобы я мог использовать оба вне функции.

Это сделано с массивом? если да, то какой это будет массив? Пустота

Ответы [ 4 ]

6 голосов
/ 13 февраля 2011

Нет, вы можете вернуть только один объект. Вы можете, однако, вернуть объект типа структуры, и вы можете поместить свои «множественные возвраты» в структуру:

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();
4 голосов
/ 13 февраля 2011

У вас есть две опции:

1) Создайте структуру и верните ее

2) В качестве параметров используйте указатели на то, что вы хотите изменить

1 голос
/ 13 февраля 2011

Вы могли бы сделать что-то вроде этого,

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

void* pVoid;
char* szString;
func(&pVoid, &szString);
0 голосов
/ 13 февраля 2011

вы можете вернуть один элемент из функции, а затем взять указатель в качестве аргумента, который вы будете изменять.Если вам дано char* (для возврата строки), и вы измените местоположение, на которое оно указывает (не забудьте освободить, если оно уже выделено!), Тогда вызывающая сторона должна увидеть измененное значение на другом конце указателятакже.Вы можете вернуть указатель в качестве основного возвращаемого значения функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...