Malloc e puntatori

di il
4 risposte

Malloc e puntatori

Sono alle primissime armi con il c
Non capisco perchè quando eseguo questo programma la funzione non modifichi il valore di *b da 7 a 5

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

void prova (int *a);

int main () {
int *b = NULL;
int c = 7;
b = &c;

prova(b);
printf ("%d", *b);

return 0;
}

void prova (int *a) {
a = (int *) malloc(sizeof(int));
*a=5;
}

4 Risposte

  • Re: Malloc e puntatori

    Molto semplicemente: tu richiami
    prova(b);
    b contiene l'indirizzo di c, quindi quando entri nella funzione
    void prova (int *a) {
    ad a viene assegnato l'indirizzo di c.
    A questo punto ti basterebbe scrivere
    *a=5;
    per cambiare il valore di c ma, non si capisce perchè, hai deciso di allocare della memoria e inizializzare il valore del puntatore a, perdendo così l'indirizzo di c....
  • Re: Malloc e puntatori

    In realtà ci sono molte incongruenze nel tuo codice ... che volevi fare?
  • Re: Malloc e puntatori

    Ero un esercizio inventato per capire come funziona malloc
  • Re: Malloc e puntatori

    E quale sarebbe questo esercizio?
Devi accedere o registrarti per scrivere nel forum
4 risposte