Maison  >  Article  >  développement back-end  >  Quelles sont les trois manières d'appeler des fonctions en langage C ?

Quelles sont les trois manières d'appeler des fonctions en langage C ?

青灯夜游
青灯夜游original
2019-03-01 13:54:4556362parcourir

Les trois manières d'appeler des fonctions en langage C sont : 1. Appel par valeur, qui consiste à transmettre la valeur d'une variable au paramètre formel de la fonction 2. Appel par référence, qui consiste à transmettre ; l'adresse de la variable directement dans la fonction ; 3. L'appel par adresse est implémenté via des pointeurs, passant la référence de la variable dans la fonction.

Quelles sont les trois manières d'appeler des fonctions en langage C ?

L'environnement d'exploitation de cet article : système Windows 7, version C11, ordinateur Dell G3.

Les trois manières d'appeler des fonctions en langage C sont : l'appel par valeur, l'appel par référence et l'appel par adresse.

1. Appel par valeur

L'appel par valeur consiste à passer la valeur d'une variable au paramètre formel de la fonction. valeur de la variable pour générer un nouveau paramètre formel, la valeur est renvoyée après l'opération du paramètre formel.

Les valeurs modifiées dans la fonction ne peuvent pas affecter le monde extérieur, donc les modifications apportées aux paramètres formels dans la fonction n'affecteront pas les valeurs des variables en dehors de la fonction.

Comprenons-le à travers des exemples de code :

#include<stdio.h>  
void myswap(int x, int y)  
{  
    int t;  
    t=x;  
    x=y;  
    y=t;  
}  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(a,b);  //作为对比,直接交换两个整数,显然不行  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}

Exécuter :

Quelles sont les trois manières dappeler des fonctions en langage C ?

[Recommandation du didacticiel vidéo : Tutoriel du langage C

Analyse :

Il n'y a pas d'interaction réussie. La raison est la suivante : en utilisant l'appel par valeur, seule la valeur est modifiée sur le paramètre formel, pas sur le paramètre réel.

2. Appel par adresse

Appel par adresse consiste à transmettre l'adresse de la variable directement dans la fonction, qui attribue l'adresse de une variable pour donner le pointeur sur le paramètre formel dans la fonction afin que le pointeur pointe vers l'adresse de la variable réelle, car les modifications apportées au contenu de l'adresse pointée par le pointeur peuvent être reflétées en dehors de la fonction, c'est-à-dire le la valeur de la variable en dehors de la fonction peut être modifiée.

Comprenons-le à travers des exemples de code :

#include<stdio.h>  
void myswap(int *p1, int *p2)  
{  
    int  t;  
    t=*p1;  
    *p1=*p2;  
    *p2=t;  
}  
int main()  
{  
    int a, b;  
    printf("请输入待交换的两个整数:");  
    scanf("%d %d", &a, &b);  
    myswap(&a,&b);  //交换两个整数的地址  
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);  
    return 0;  
}

Exécuter :

Quelles sont les trois manières dappeler des fonctions en langage C ?

Analyser :

Interaction réussie La raison est la suivante : lors d'un appel par adresse, l'adresse d'origine est modifiée à l'aide d'un pointeur, de sorte que les paramètres réels sont échangés.

3. L'appel de référence

L'appel de référence est en fait implémenté via des pointeurs, en passant la référence de la variable dans la fonction ; être atteint L'effet de l'appel, mais lorsqu'elle est utilisée comme un appel par valeur, la fonction peut modifier sa valeur.

Comprenons-le à travers des exemples de code :

#include<stdio.h>
void myswap(int &x, int &y)
{
    int t;
    t=x;
    x=y;
    y=t;
}
  
int main()
{  
    int a, b;
    printf("请输入待交换的两个整数:");
    scanf("%d %d", &a, &b);
    myswap(a,b);  //注意:这里调用方式与传值调用一样,直接以变量a和b作为实参交换
    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
    return 0;
}

Exécuter :

Quelles sont les trois manières dappeler des fonctions en langage C ?

Analyser :

Interaction réussie La raison est la suivante : lors d'un appel par référence, la référence modifie directement les valeurs des deux variables de paramètre réelles a et b, elles sont donc échangées.

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