ホームページ >バックエンド開発 >C#.Net チュートリアル >C/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)

C/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)

青灯夜游
青灯夜游オリジナル
2019-03-11 10:27:2230419ブラウズ

関数から複数の値を返す必要がある場合がありますが、残念ながら 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; 
}

出力:

C/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)

メソッド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; 
}

出力:

C/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)

#方法 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 サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がC/C++ 関数はどのようにして複数の値を返すのでしょうか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。