Maison >développement back-end >C++ >Comment les modifications de paramètres affectent-elles les fonctions d'appel en C ?

Comment les modifications de paramètres affectent-elles les fonctions d'appel en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-24 19:02:15215parcourir

How Do Parameter Modifications Affect Calling Functions in C  ?

Modification des paramètres dans les fonctions

Dans une fonction, la modification de la valeur d'un paramètre peut ou non affecter la fonction appelante en C . Prenons l'exemple 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;
}

L'appel de cette fonction avec trans(center_x, center_y, angle, xc, yc) soulève la question : xc et yc seront-ils modifiés ?

En C , la méthode de transmission des paramètres par défaut est l'appel par valeur, ce qui signifie qu'une copie de l'argument est transmise à la fonction. Ainsi, la modification de m et n dans trans n'affectera pas xc et yc.

Pour garantir que les modifications apportées aux paramètres au sein de la fonction sont reflétées dans la fonction appelante, vous pouvez utiliser des références. En C , les références offrent une alternative aux pointeurs et se comportent comme des alias pour les variables. En utilisant des références, vous pouvez modifier directement les variables d'origine :

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

int main() {
    trans(center_x, center_y, angle, xc, yc);
}

Dans ce cas, lorsque xc et yc sont passés à trans, ils sont traités comme des alias pour les variables d'origine, permettant à trans de modifier leurs valeurs directement.

En C, une approche similaire consiste à transmettre des pointeurs ou des adresses aux variables au lieu de leurs valeurs. Cependant, l'utilisation de références en C est généralement considérée comme plus pratique et plus sûre.

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