вернуть несколько значений из функции в C без struct, tuple и всего остального, что выше уровня массива - PullRequest
0 голосов
/ 08 января 2019

, поэтому у меня есть эта функция.

int something(int Data1[], int Data2[], int size) {
    int data3[2],
    data[0] = return1int(sortedData1, size);
    data[1] = return1int(sortedData2, size);
    return (I dont know);
}     

и я пытаюсь найти способ вернуть эти два значения (data [1], data [0]) некоторому int в main. и мой вопрос - как я могу это сделать БЕЗ использования struct вообще и не меняя int в main на массив.

спасибо, спасибо, спасибо !!!

Ответы [ 2 ]

0 голосов
/ 08 января 2019

В C вы можете передать указатель на переменную, чтобы обновить ее значение, чтобы ваша функция могла выглядеть следующим образом

void something(int Data1[], int Data2[], int size,int *ret1, int *ret2) {

    *ret1 = return1int(sortedData1, size);
    *ret2 = return1int(sortedData2, size);
    return;
}

и вы бы назвали это примерно так

something(array1,array2,size,&value1,&value2);

и value1 и value2 будут содержать значения, возвращаемые функцией. И это оставляет фактическое возвращаемое значение из функции, которая будет использоваться для указания условия успеха или ошибки.

0 голосов
/ 08 января 2019

Если вы не хотите использовать std :: pair (потому что это C ++) или структуру (хотя, на мой взгляд, в этом нет ничего плохого), вы все равно можете использовать параметры out.

void something(int Data1[], int Data2[], int size, int& out1, int& out2) {
    int data3[2],
    out1 = return1int(sortedData1, size);
    out2 = return1int(sortedData2, size);
}     
...