C言語で return 後の値に差異がある場合の対処法

関数が複数の戻り値を返す場合は、次のような方法で解決できます。

  1. ポインターパラメーターを利用する:関数が必要とする複数の戻り値を、ポインターパラメーターを通じて呼び出し関数に渡し、呼び出し関数内部で、ポインターが指す変数の値を変更する。
void func(int a, int b, int* sum, int* difference) {
*sum = a + b;
*difference = a - b;
}
int main() {
int a = 10, b = 5, sum, difference;
func(a, b, &sum, &difference);
printf("Sum: %d\n", sum);
printf("Difference: %d\n", difference);
return 0;
}
  1. 構造体を利用する: 複数の返り値が必要な場合は、構造体のメンバを利用してそれらをまとめ上げ、構造体を関数の返り値にすることができる。
typedef struct {
int sum;
int difference;
} Result;
Result func(int a, int b) {
Result result;
result.sum = a + b;
result.difference = a - b;
return result;
}
int main() {
int a = 10, b = 5;
Result result = func(a, b);
printf("Sum: %d\n", result.sum);
printf("Difference: %d\n", result.difference);
return 0;
}
  1. グローバル変数の利用:他の関数から直接アクセス可能なグローバル変数を定義し、返す必要がある複数の値を格納します。
int sum;
int difference;
void func(int a, int b) {
sum = a + b;
difference = a - b;
}
int main() {
int a = 10, b = 5;
func(a, b);
printf("Sum: %d\n", sum);
printf("Difference: %d\n", difference);
return 0;
}

状況に応じた適切な方法を選択することで、複数の戻り値を問題解決に活用することが可能です。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds