Maison > développement back-end > C++ > Comment puis-je modifier les paramètres de fonction et refléter les modifications apportées à l'appelant en C ?

Comment puis-je modifier les paramètres de fonction et refléter les modifications apportées à l'appelant en C ?

Barbara Streisand
Libérer: 2024-12-10 12:16:10
original
246 Les gens l'ont consulté

How Can I Modify Function Parameters and Reflect Changes in the Caller in C  ?

Modification des paramètres dans les fonctions : implications pour l'appelant

En C, les paramètres passés à une fonction sont généralement copiés par valeur. Cela signifie que toute modification apportée au paramètre dans la fonction n'a pas d'impact sur la valeur d'origine dans l'appelant.

Dans le code donné, la fonction trans est définie comme :

void trans(double x,double y,double theta,double m,double n)
{
    m=cos(theta)*x+sin(theta)*y;
    n=-sin(theta)*x+cos(theta)*y;
}
Copier après la connexion

Si vous appelez trans depuis le même fichier que :

trans(center_x,center_y,angle,xc,yc);
Copier après la connexion

les valeurs de xc et yc ne seront pas modifiées au sein de la fonction. Pour y parvenir, vous avez deux options :

  1. Utiliser les références en C :

    • Ajouter une esperluette (&) avant chaque paramètre m et n dans la définition de la fonction :

      void trans(double x, double y, double theta, double& m, double& n)
      Copier après la connexion
    • Dans l'appelant, passer les variables sans l'esperluette :

      trans(center_x, center_y, angle, xc, yc);
      Copier après la connexion
  2. Utiliser des pointeurs en C :

    • Modifiez la définition de la fonction pour accepter pointeurs :

      void trans(double x, double y, double theta, double* m, double* n)
      Copier après la connexion
    • Dans l'appelant, transmettre l'adresse des variables :

      trans(center_x, center_y, angle, &xc, &yc);
      Copier après la connexion

Par en utilisant l'une ou l'autre méthode, les valeurs de xc et yc seront modifiées dans la fonction trans, car elles sont désormais transmises par référence ou par pointeur. Cela permet à la fonction de modifier directement les variables d'origine dans l'appelant.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal