Passaggio variabili con puntatori

di il
2 risposte

Passaggio variabili con puntatori

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void numero(int *a);

void utenti(int *a);
int main(int argc, char *argv[]) {
int a;
int *p;
a=4;

numero(&a);
printf("%d\n",a); //mi stampa 7
utenti(&a);

return 0;
system(" pause ");

}
void numero(int* a){
*a=7;

}
void utenti(int* a){

printf("%d\n",a); //non mi stampa 7
}

vorrei capire perchè se nel main mi stampa il 7 e anche nella funzione "numero" ,nella funzione "utenti" mi stampa un indirizzo. come faccio ad avere la variabile aggiornata?

2 Risposte

  • Re: Passaggio variabili con puntatori

    Usa anche li *a
  • Re: Passaggio variabili con puntatori

    Perchè nell'istruzione
    printf("%d\n",a);
    'a' rappresenta l'indirizzo del puntatore. Per ottenere il risultato che vuoi tu, devi dereferenziare il puntatore per ottenere la variabile puntata, cioè 7.
    Basta aggiungere un asterisco prima della 'a'
    printf("%d\n",*a);
    Prova così e vedi che ti stamperà 7 anche la funzione "utenti"
Devi accedere o registrarti per scrivere nel forum
2 risposte