Maison > développement back-end > C++ > Comment modifier les variables d'origine lors de la transmission de paramètres à une fonction C ?

Comment modifier les variables d'origine lors de la transmission de paramètres à une fonction C ?

DDD
Libérer: 2024-12-27 04:28:28
original
413 Les gens l'ont consulté

How Do I Modify Original Variables When Passing Parameters to a C   Function?

Passer des paramètres par référence par rapport à une valeur dans une fonction

Considérez l'extrait de code suivant :

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 cette fonction comme suit :

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

et attendez les valeurs de xc et yc à changer, vous serez déçu. En effet, les paramètres sont transmis par valeur en C par défaut, ce qui signifie que toute modification apportée aux paramètres à l'intérieur de la fonction n'est pas reflétée dans les variables d'origine transmises.

Pour surmonter ce problème, vous pouvez soit transmettre le paramètres par référence ou utilisez l'arithmétique du pointeur.

Utilisation des références

En C, vous pouvez utiliser des références à transmettre les paramètres par référence. Cela vous permet de modifier les variables d'origine transmises. Voici comment modifier la fonction trans pour utiliser des références :

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

Notez que les types de paramètres sont désormais des références à double (c'est-à-dire double&).

Vous pouvez ensuite appeler la fonction comme suit :

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

Cela modifiera désormais correctement les valeurs de xc et yc.

Utilisation de l'arithmétique du pointeur

Une autre façon de transmettre des paramètres par référence en C consiste à utiliser l'arithmétique du pointeur. Ceci est plus courant en C, mais cela peut également être utilisé en C . Voici comment modifier la fonction trans pour utiliser l'arithmétique des pointeurs :

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

Notez que les types de paramètres sont désormais des pointeurs vers double (c'est-à-dire double*).

Vous pouvez ensuite appeler le fonctionner comme suit :

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

Cela modifiera également correctement les valeurs de xc et yc.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal