ホームページ >バックエンド開発 >C#.Net チュートリアル >C/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)
関数から複数の値を返す必要がある場合がありますが、残念ながら C/C ではこれが許可されていませんが、いくつかの賢い方法でこの効果を実現できます。以下の記事では関数から複数の値を返すC/C手法を紹介しますので、ご参考になれば幸いです。 [推奨ビデオ チュートリアル: C 言語チュートリアル 、C チュートリアル ]
方法 1: を使用するポインタ:
関数が呼び出されるとき、アドレスとともにパラメータを渡し、ポインタを使用してその値を変更します。このようにして、変更された値が元のパラメータになります。
コード例を通して実装方法を見てみましょう。
例: 2 つの数値を入力し、サイズを比較して再出力します。
#include <stdio.h> void compare(int a, int b, int* add_great, int* add_small) { if (a > b) { // 变量a存储在指针变量*add_great所指向的地址中 // 变量b存储在指针变量*add_small所指向的地址中 *add_great = a; *add_small = b; } else { *add_great = b; *add_small = a; } } int main() { int great, small, x, y; printf("输入两个数字: \n"); scanf("%d%d", &x, &y); // 最后两个参数是通过给出内存位置的地址来传递的。 compare(x, y, &great, &small); printf("\n最大值为:%d,最小值为:%d", great, small); return 0; }
出力:
メソッド2: 構造体
構造体はユーザー定義のデータ型であるため、2 つの整数変数を含む構造体を定義し、これらの変数に大きい値と小さい値を格納して、その構造の価値。
例:
#include <stdio.h> struct greaterSmaller { int greater, smaller; }; typedef struct greaterSmaller Struct; Struct findGreaterSmaller(int a, int b) { Struct s; if (a > b) { s.greater = a; s.smaller = b; } else { s.greater = b; s.smaller = a; } return s; } int main() { int x, y; Struct result; printf("输入两个数字: \n"); scanf("%d%d", &x, &y); // 最后两个参数是通过给出内存位置的地址来传递的。 result = findGreaterSmaller(x, y); printf("\n最大值为:%d,最小值为:%d", result.greater, result.smaller); return 0; }
出力:
#方法 3: 配列を使用する
配列がパラメーターとして渡される場合、そのベース アドレスが関数に渡されるため、配列のコピーに加えられた変更は元の配列に変更されます。注: このメソッドは、返された項目が同じタイプの場合にのみ機能します。
例: 配列を使用して複数の値を返すと、大きい値が arr[0] に保存され、小さい値が arr[1] に保存されます#include <stdio.h> // 将较大的元素存储在arr[0]中 void findGreaterSmaller(int a, int b, int arr[]) { // Store the greater element at // 0th index of the array if (a > b) { arr[0] = a; arr[1] = b; } else { arr[0] = b; arr[1] = a; } } // Driver code int main() { int x, y; int arr[2]; printf("输入两个数字: \n"); scanf("%d%d", &x, &y); findGreaterSmaller(x, y, arr); printf("\n最大值为:%d,最小值为:%d", arr[0], arr[1]); return 0; }出力:
以上がC/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。