gRoOvE 0 Denunciar post Postado Setembro 17, 2008 É 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
José Enésio 4 Denunciar post Postado Setembro 17, 2008 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
gRoOvE 0 Denunciar post Postado Setembro 18, 2008 Obrigado Enésio, resolveu meu problema velho http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Existe alguma outra forma de fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites