Passage par valeur vs. passage par référence

pass by reference vs pass by value animation
#include <stdio.h>

#define MAX_SOLDE_COMPTE    3000

// Fonction avec passage de tous les paramètres par valeur
bool simulerCreditCompte(int soldeCompte, int sommeArgent) {
    bool resultat;

    if (soldeCompte <= MAX_SOLDE_COMPTE) {
        soldeCompte = soldeCompte + sommeArgent;
        printf("=> Solde du compte après simulation : %d\n", soldeCompte);
        resultat = true;
    } else {
        resultat = false;
    }
    return resultat;
}

// Fonction avec passage d'un paramètre par variable/pointeur(/référence)
bool crediterCompte(int * soldeCompte, int sommeArgent) {
    bool resultat;

    if (*soldeCompte <= MAX_SOLDE_COMPTE) {
        *soldeCompte = *soldeCompte + sommeArgent;
        printf("=> Solde du compte après opération de crédit : %d\n", *soldeCompte);
        resultat = true;
    } else {
        resultat = false;
    }
    return resultat;
}

int main() {
    int solde = 500;
    bool isSimulationCreditOK = false;
    bool isCreditOK = false;

    printf("Mon solde avant de la simulation de crédit : %d\n", solde);
    isSimulationCreditOK = simulerCreditCompte(solde, 300);
    printf("Mon solde après la simulation de crédit : %d\n\n", solde);

    printf("Mon solde avant l'opération de crédit : %d\n", solde);
    isCreditOK = crediterCompte(&solde, 300);
    printf("Mon solde après l'opération de crédit : %d\n", solde);

    return 0;
}
Mon solde avant de la simulation de crédit : 500
=> Solde du compte après simulation : 800
Mon solde après la simulation de crédit : 500

Mon solde avant l'opération de crédit : 500
=> Solde du compte après opération de crédit : 800
Mon solde après l'opération de crédit : 800
pass by value vs pass by reference

🞄  🞄  🞄