C言語の関数は、どのように複数の値を返しますか?

C言語では関数は1つの値しか返せませんが、ポインタや構造体を使用して複数の値を返すことができます。

  1. 引数のポインタで複数の戻り値を返す関数が使える。
void multipleValues(int a, int b, int *sum, int *diff) {
    *sum = a + b;
    *diff = a - b;
}

int main() {
    int a = 5, b = 3, sum, diff;
    multipleValues(a, b, &sum, &diff);
    printf("Sum: %d\n", sum);
    printf("Difference: %d\n", diff);
    return 0;
}
  1. 構造体を使用する:構造体(struct)を定義し、返り値として構造体を利用することで、複数の値を返すことができます。
typedef struct {
    int sum;
    int diff;
} Result;

Result multipleValues(int a, int b) {
    Result result;
    result.sum = a + b;
    result.diff = a - b;
    return result;
}

int main() {
    int a = 5, b = 3;
    Result result = multipleValues(a, b);
    printf("Sum: %d\n", result.sum);
    printf("Difference: %d\n", result.diff);
    return 0;
}
bannerAds