Ir ao conteúdo

Problema em criar um vetor q armazena endereço


chrislix

Posts recomendados

Postado

Galera preciso criar um vetor, e as posições desse vetor ter um endereço que aponta para o valor armazenado, apos isso imprimir ambos, endereço e valor referente, alguem poderia me ajudar por favor?

void insere(int chave, int tam, int **vet){     if(vet[tam]!=0)    {        insere(chave, tam, *vet);    }    if(vet[tam]==0)    {        No *novoNo = (No *)malloc(sizeof(No));        vet[tam]= novoNo;    }  }  main(){    No *vet[10];    int i;     for(i = 0; i<10; i++)    {        vet[i]= 0;    }    int b;    int a= 10;    for(i=0;i<10;i++)    {        printf("insisra o valor para armazenar no vetor\n");        scanf("%f", &;        insere( b, a, *vet);    }     for(i=0;i<a;i++)    {        printf("%d, %p", vet[i], &vet[i]);    }}
Postado

Não testei seu código, mas pude ver dois erros.

1) Na função "main()", você está especificando o vetor "vet" como sendo do tipo "No *", mas na função "insere()", ele é recebido como "int *".

Além disso, como o vetor é estático, logo, não há necessidade em receber ele como ponteiro duplo na função "insere()".

 

2) Na função insere, você está entrando em recursividade sem alterar algum dos parâmetros passados, logo, se a condição "if()" for válida, ele entrará em loop infinito.

 

Modificação da variável "vet":

Na função "main()":int main(void){    No *vet[10];    [...]    insere( b, a, vet );    [...]    printf("%d, %p", (*vet)[i], vet[i]);} Na função "insere()":void insere( int chave, int tam, No *vet[] ){    [...]    novoNo = malloc( sizeof(No) );    [...]}

Não é necessário fazer typecast no retorno da função "malloc()" e também não é aconselhável, pois pode esconder erros em códigos, quando se força a troca de um tipo por outro.

Postado

@chrislix

 

 

Além de verificar o que o @ScreenBlack apontou, poste também como você definiu No. Só tem um membro do tipo int?

 

 

Se é o que estou imaginando, eu faria a leitura dos valores (com scanf) dentro da função recursiva.

 

 

 

Abs.

LNW

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...