Heim > Backend-Entwicklung > C#.Net-Tutorial > Wie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel)

Wie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel)

青灯夜游
Freigeben: 2019-03-11 10:27:22
Original
30411 Leute haben es durchsucht

Manchmal müssen wir mehrere Werte von einer Funktion zurückgeben, leider lässt C/C++ dies nicht zu, aber wir können diesen Effekt durch einige clevere Methoden erreichen. Der folgende Artikel stellt Ihnen die Methode zur Rückgabe mehrerer Werte aus Funktionen in C/C++ vor. Ich hoffe, dass er für Sie hilfreich ist. [Empfohlene Video-Tutorials: C Language Tutorial, C++ Tutorial]

Wie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel)

Methode 1: Durch Verwendung Zeiger:

Wenn eine Funktion aufgerufen wird, übergeben Sie den Parameter mit der Adresse und verwenden Sie den Zeiger, um seinen Wert auf diese Weise zu ändern. Der geänderte Wert wird zum ursprünglichen Parameter.

Sehen wir uns anhand von Codebeispielen an, wie man es implementiert.

Beispiel: 2 Zahlen eingeben, Größen vergleichen und erneut ausgeben

#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; 
}
Nach dem Login kopieren

Ausgabe:

Wie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel)

Methode 2: Durch die Verwendung der Struktur

können wir eine Struktur definieren, die zwei ganzzahlige Variablen enthält, und diese dann verwenden Wert dieser Struktur.

Beispiel:

#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; 
}
Nach dem Login kopieren

Ausgabe:

Wie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel)

Methode 3: Durch Verwendung des Arrays

Wenn ein Array als Argument übergeben wird, wird seine Basisadresse an die Funktion übergeben, sodass alle an der Kopie des Arrays vorgenommenen Änderungen auf das ursprüngliche Array übertragen werden.

Hinweis: Diese Methode funktioniert nur, wenn die zurückgegebenen Artikel vom gleichen Typ sind.

Beispiel: Wenn Sie ein Array verwenden, um mehrere Werte zurückzugeben, wird ein größerer Wert bei arr[0] und ein kleinerer Wert bei arr[1] gespeichert.

#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; 
}
Nach dem Login kopieren

Ausgabe:

Wie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel)

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !

Das obige ist der detaillierte Inhalt vonWie geben C/C++-Funktionen mehrere Werte zurück? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
c c++
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage