C言語で複数の値を返すにはどうすればいいですか?

C言語自体は複数の値を直接返すことをサポートしていませんが、複数の値を返す方法は以下のようにして実現できます:

  1. 構造体:複数の値をメンバーとして持つ構造体を定義し、その構造体全体を関数の戻り値として利用することができます。
#include <stdio.h>

struct MultipleValues {
    int value1;
    int value2;
};

struct MultipleValues getValues() {
    struct MultipleValues values;
    values.value1 = 10;
    values.value2 = 20;
    return values;
}

int main() {
    struct MultipleValues result = getValues();
    printf("Value 1: %d\nValue 2: %d\n", result.value1, result.value2);
    return 0;
}
  1. ポインタ引数:関数内でポインタが指す変数の値を変更することで、複数の値を返すことができます。
#include <stdio.h>

void getValues(int* value1, int* value2) {
    *value1 = 10;
    *value2 = 20;
}

int main() {
    int result1, result2;
    getValues(&result1, &result2);
    printf("Value 1: %d\nValue 2: %d\n", result1, result2);
    return 0;
}
  1. グローバル変数:関数内でグローバル変数を定義し、その値を変更することで複数の値を返すことができます。
#include <stdio.h>

int value1, value2;

void getValues() {
    value1 = 10;
    value2 = 20;
}

int main() {
    getValues();
    printf("Value 1: %d\nValue 2: %d\n", value1, value2);
    return 0;
}

指针参数やグローバル変数を使用する場合は、変数のスコープとライフサイクルを確保して、予期せぬ問題を回避するよう注意が必要です。一方、構造体を使用することで複数の値をよりよくカプセル化し、コードの可読性と保守性を向上させることができます。

bannerAds