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
Barbara Streisandoriginal
2024-12-10 12:16:10209parcourir

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

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

trans(center_x,center_y,angle,xc,yc);

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)
    • Dans l'appelant, passer les variables sans l'esperluette :

      trans(center_x, center_y, angle, xc, yc);
  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)
    • Dans l'appelant, transmettre l'adresse des variables :

      trans(center_x, center_y, angle, &xc, &yc);

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:
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