Maison  >  Article  >  développement back-end  >  Comment les fonctions C/C++ renvoient-elles plusieurs valeurs ? (exemple de code)

Comment les fonctions C/C++ renvoient-elles plusieurs valeurs ? (exemple de code)

青灯夜游
青灯夜游original
2019-03-11 10:27:2230214parcourir

Parfois, nous devons renvoyer plusieurs valeurs à partir d'une fonction, malheureusement C/C++ ne le permet pas, mais nous pouvons obtenir cet effet grâce à certaines méthodes intelligentes ; L'article suivant vous présentera la méthode de renvoi de plusieurs valeurs à partir de fonctions en C/C++. J'espère qu'il vous sera utile. [Tutoriels vidéo recommandés : Tutoriel du langage C, Tutoriel C++]

Comment les fonctions C/C++ renvoient-elles plusieurs valeurs ? (exemple de code)

Méthode 1 : En utilisant Pointeur :

Lorsqu'une fonction est appelée, transmettez le paramètre avec l'adresse et utilisez le pointeur pour changer sa valeur de cette manière, la valeur modifiée devient le paramètre d'origine ;

Voyons comment l'implémenter à travers des exemples de code.

Exemple : saisissez 2 nombres, comparez les tailles et rééditez

#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; 
}

Sortie :

Comment les fonctions C/C++ renvoient-elles plusieurs valeurs ? (exemple de code)

Méthode 2 : En utilisant la structure

Puisque la structure est un type de données défini par l'utilisateur, nous pouvons définir une structure contenant deux variables entières et stocker des valeurs plus grandes et plus petites pour ces variables et puis utilisez la valeur de cette structure.

Exemple :

#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; 
}

Sortie :

Comment les fonctions C/C++ renvoient-elles plusieurs valeurs ? (exemple de code)

Méthode 3 : En utilisant un tableau

Lorsqu'un tableau est passé en argument, son adresse de base est transmise à la fonction, donc toute modification apportée à la copie du tableau sera remplacée par le tableau d'origine.

Remarque : Cette méthode ne fonctionnera que si les éléments renvoyés sont du même type.

Exemple : L'utilisation d'un tableau pour renvoyer plusieurs valeurs stockera la plus grande valeur à arr[0] et la plus petite valeur à 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; 
}

Sortie :

Comment les fonctions C/C++ renvoient-elles plusieurs valeurs ? (exemple de code)

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn