Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

[Resolvido] Usar o realloc dentro de outra função

Recommended Posts

É o seguinte: tenho um ponteiro(p) na função main(), ai mando esse ponteiro pra dentro da função teste(int *p), lá dentro resolvo realocar o mesmo, realocando, o endereço da memória vai mudar, certo? Agora a grande questão, como mostrar na função main() o valor deste ponteiro corretamente? O endereço vai permanecer o mesmo quando declarei na função main() e quando retornar da função teste(), mas o resulado estará incorreto pois foi realocado, trocando o endereço da memória. Se alguém puder me ajudar, estou a dias mexendo nisso "/

 

teste(int *p)
{
	p = realloc(p, 10 * sizeof(int));
		*(p) = 10;
		*(p+1) = 15;
		*(p+2) = 20;
		.
		.
		.
}
main()
{
	int *p;
	p = (int*)malloc(2 * sizeof(int));
		*(p) = 100;
		*(p+1) = 200;
	teste(p);
	printf("Valor de p %d",*(p));
		printf("Valor de p %d",*(p+1));
		printf("Valor de p %d",*(p+2));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode retornar o vetor pela função, aí funciona.

Só que daí pra chamar a função não fica tão bunitinho assim:

 

p = teste(p);

E vai ficando mais feio à medida que seu ponteiro vai tendo um nome mais explicativo :P

Mas funciona:

 

#include <stdio.h>

int* teste(int *p)
{
	p = (int* )realloc(p, 10 * sizeof(int));
		*(p) = 10;
		*(p+1) = 15;
		*(p+2) = 20;
		return p;
}
int main()
{
	int *p;
	p = (int*)malloc(2 * sizeof(int));
		*(p) = 100;
		*(p+1) = 200;
	p = teste(p);
	printf("Valor de p %d\n",*(p));
		printf("Valor de p +1 %d\n",*(p+1));
		printf("Valor de p +2 %d\n",*(p+2));
		getchar();
		return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.