La relation entre les paramètres formels et les paramètres réels en langage C est la suivante : le paramètre formel est une copie de la valeur du paramètre réel. Quel que soit le type du paramètre, les paramètres formels transmis à la sous-fonction ne sont que les valeurs des paramètres réels. Par conséquent, lorsque vous modifiez la valeur de la variable paramètre formelle elle-même, cela n'a rien à voir avec les paramètres réels. En d’autres termes, les modifications apportées aux paramètres formels n’affecteront pas les paramètres réels.
Cependant, si le type de paramètre est un type de pointeur, vous pouvez modifier les données dans l'adresse réelle du paramètre en modifiant les données dans l'adresse pointée par la variable de pointeur.
Par conséquent, lors de l'utilisation de la fonction SWAP pour échanger des données, deux points doivent être garantis :
Le paramètre doit être de type pointeur, pointant vers les données à échanger
Lors de l'échange, les données de l'adresse doivent être échangées, pas l'adresse elle-même.
Code de référence :
//Mauvais code d'échange 1
voidswap1(inta,intb)//Le paramètre n'est pas un pointeur vers les données à échanger
{
intt=a;
a=b;
b= t;
}
//Mauvais code d'échange 2
voidswap2(int*a,int*b)
{
int*t=a;//Échanger la variable de paramètre formel elle-même
a=b;
b=t;
}
//Corriger le code d'échange
voidswap(int*a,int*b)
{
intt=*a;//Échanger les données dans le formulaire formel adresse de variable de paramètre, les variables de pointeur restent inchangées
*a=*b;
*b=t;
}
L'affiche doit avoir une compréhension plus approfondie des paramètres et des valeurs de retour de la fonction~
Tout d'abord La valeur de retour d'une fonction ne doit être qu'une seule variable. Le return(a,b) dans votre fonction swap peut ne pas passer la compilation~
Au moment de la compilation. En même temps, les paramètres de la fonction peuvent être passés sous trois formes : adresse, valeur et référence. Dans votre cas, il est recommandé d'utiliser la méthode pointeur pour modifier directement les valeurs de a et b en swap. Le code est le suivant :
void swap(int*a, int*b)
{
int t;
t=*a;
*a=*b;
*b= t;
}
La méthode appelée dans main est swap(&a,&b);
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!