Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida Funçoes (Ponteiros) e Alocação Dinamica


Toleds

Pergunta

Boa noite a todos!

Eu estou fazendo um trabalho para a faculdade mas estou com um problema que não consigo resolver.

Eu gostaria de saber como faço para passar os valores de uma matriz V, cuja memória foi alocada dinamicamente dentro de uma função, de volta para uma matriz na função main. Para explicar melhor, abaixo está a parte do código em que estou tendo problema:


void Ler_Imagem (int Col, int Lin, int ***v)
...
...
...
v = (int *) calloc (Lin , sizeof(int *));
for (i=0; i < Lin; i++)
{
v = (int *) calloc (Col , sizeof(int));
}
for (i = 0; i < Lin; i++)
{
for (j = 0; j < Col; j++)
{
fscanf(inFile, "%d", &v[j]);
}

int main()
{
int NumCol, NumLin;
int **v;
NumCol = 0; NumLin = 0;
Ler_Imagem(NumCol, NumLin, &v);
}
Eu passo v por referencia para a função "Ler Imagem"... Nesta função, os valores de Linhas e Colunas da matriz são obtidos, e com eles, eu uso alocação dinamica para determinar o tamanho de V.... Depois, eu gravo na matriz V os valores obtidos de um arquivo que foi aberto na função "Ler imagem"... E a partir disso eu queria jogar essa matriz obtida (que foi gravada em V) de volta para a função main, mas não estou conseguindo entender como.
Espero que alguém possa me ajudar, eu ficaria muuuito agradecido.
Obs: Eu não postei por completo a função "Ler_Imagem" pois acredito que não seja necessário, mas se alguém precisar do resto dela para poder me ajudar, é so falar q eu coloco ela por completo.
Obrigado a todos :)
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Opa, beleza?

Em primeiro lugar. Isso não é passagem por referência, e sim passagem de ponteiro, o que não é necessário pra array. Em C, um array já é considerado um ponteiro para o primeiro elemento. Mas já que passa um ponteiro pro array. O certo seria:

*v = (int *) calloc (Lin , sizeof(int *));

Em segundo, não entedi isso:

    NumCol = 0; NumLin = 0;
 
    Ler_Imagem(NumCol, NumLin, &v);

Ele não vai alocar nada pro array dentro da sua função e consequentemente o seu loop For não irá executar...

você precisa iniciar NumCol e NumLin com o tamanho do array.

Qualquer coisa é só falar.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...