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;
}