Changer la valeur de quelque chose dans une fonction

Ceci est un test pour quelque chose de plus grand, c’est pourquoi il est écrit ainsi. Comment pourrais-je créer ce morceau de code pour que la valeur de a continue à augmenter? Dans mon projet, j’appelle une fonction qui parsing une ligne d’un fichier. Je dois définir les valeurs d’une structure sur certaines valeurs définies dans l’appel de fonction (les parameters de la fonction ont été initialisés dans la fonction principale, comme le code ci-dessous).

int increment(int a) { a++; return 0; } int main() { int a =0; int b =0; while( b<5){ increment(a); b++; cout << "a is: " << a << ". And b is: " << b << "\n"; } system("PAUSE"); } 

Merci.

    Passer son adresse à incrémenter

     void increment(int *a){ (*a)++; } increment(&a); //Using the address of operator pass in the address of a as argument 

    Vous pouvez utiliser un pointeur: Voir Passage par référence en C pour une question similaire.

    En outre, vous pouvez simplement modifier votre fonction d’incrémentation pour renvoyer la valeur incrémentée de a et l’appeler en mode principal comme suit:

    a = incrément (a);

    Vous pourriez:

    • Déclarer static int a = 0; return a++;
    • Remplacez la signature par int increment( int* a ) et return *a++;
    • Déclarer a étendue dans le fichier du même fichier source en tant que increment()
    • Faire a global
    • Faites ceci en C ++ et passez a par référence

    Vous passez a valeur by, donc la valeur d’ a ne peut jamais être modifiée.

    Une solution est:

     int increment (int a) { return a + 1; } 

    Alors dans ta boucle:

     a = increment(a); 

    Une autre solution consiste à passer a par référence (un pointeur)

     void increment (int *a) { *a = *a + 1; } 

    et dans la boucle

     increment(&a);