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
DDDoriginal
2024-12-27 04:28:28396parcourir

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

Si vous appelez cette fonction comme suit :

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

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

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

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

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

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!

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