Originariamente inviato da oregon
Come mi sembra debba essere
codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int dim = 1;
void Popola(int vet[], int dim)
{
int i;
for(i=0; i<dim; i++)
{
vet[i]=rand();
printf("\nvet[%d]=%d", i, vet[i]);
}
}
void Cambiadimensione(int **vet, int *dim)
{
printf("\nInserisci la nuova dimensione ");
scanf("%d", dim);
*vet = (int *)realloc(*vet, *dim * sizeof(int));
Popola(*vet, *dim);
}
int main()
{
int *vet;
vet = (int *)malloc(dim * sizeof(int));
Cambiadimensione(&vet, &dim);
system("PAUSE");
return 0;
}
ohhh grazie mille sul serio, potrà sembrare un codice banale ma mi si è incurvata la schiena a furia di batterci la testa sopra.
comunque essendo io uno studente ho bisogno di capirne il perchè, quindi non ti arrabiare se approfitto della tua disponibilità e ti faccio qualche domanda teorica(le ho incluse nel quote)
codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int dim = 1;
void Popola(int vet[], int dim)
{
int i;
for(i=0; i<dim; i++)
{
vet[i]=rand();
printf("\nvet[%d]=%d", i, vet[i]);
}
}
void Cambiadimensione(int **vet, int *dim)//cosa significa quell'operatore (**) che precede vet? e perchè non ci sono sono le parentesi quadre?
{
printf("\nInserisci la nuova dimensione ");
scanf("%d", dim);
*vet = (int *)realloc(*vet, *dim * sizeof(int));
Popola(*vet, *dim);//perchè qui invece non hai passato i parametri per riferimento?
}
int main()
{
int *vet;
vet = (int *)malloc(dim * sizeof(int));
Cambiadimensione(&vet, &dim); //perchè qui hai usato la &? così non passi l'indirizzo del puntatore?
system("PAUSE");
return 0;
}