2010-06-12 5 views
1

Ceci est un exemple simplifié du problème que j'ai:Cet exemple peut-il être fait avec des pointeurs au lieu de la variable globale?

#include <stdio.h> 
#include <stdlib.h> 

void f2(int** a) { 
    printf("a: %i\n", **a); 
} 

void f1(int* a) { 
    f2(&a); 
} 

int main() { 
    int a = 3; 
    f1(&a); // prints "a: 3" 

    f2(???); 

    return 0; 
} 

Le problème est que je voudrais être en mesure d'utiliser aussi bien dans f2()main() et f1().

Cela peut-il être fait sans utiliser de variables globales?

Répondre

9

Vous devez passer un pointeur vers un pointeur, vous devez créer un pointeur dans main() afin que vous puissiez prendre son adresse:

int main() 
{ 
    int a = 3; 
    int* aptr = &a; 
    f2(&aptr); 

    return 0; 
} 
+0

truc impressionnant! Merci =) – Louise

4
int main() { 
    int a = 3; 
    int *aa = &a; /* stores the address of a */ 

    f1(&a); /* prints "a: 3" */ 
    f2(&aa); /* prints "a: 3" */ 

    return 0; 
} 
Questions connexes