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

Passagem de matriz para uma função


Luciano - reptile

Pergunta

Estou com um problema, gostaria de saber como fazer a passagem de uma matriz por referência.

void pede_valores(int *pmatriz[][3]) {
  int i,j;
  for (i=0;i<=2;i++) {
    for (j=0;j<=2;j++) {
      *pmatriz[i][j]=1;
    }
  }
}

int main() {
  int matriz[3][3];
  pede_valores(&matriz);
  printf("Resultado: %i",matriz[0][0]);
  system("pause");
  return 0;
}

Quando compilo esse código no Dev-C/C++ no Windows XP ele diz que encontrou um problema e precisa ser fechado.

Gostaria de saber qual o jeito certo de passar uma matriz por referencia para uma função.

Agradeço desde já ....

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

#include <stdio.h>

void pede_valores(int pmatriz[3][3]) {

int i,j;

for (i=0;i<=2;i++) {

for (j=0;j<=2;j++) {

pmatriz[j]=1;

}

}

}

int main() {

int matriz[3][3];

pede_valores(matriz);

printf("Resultado: %i",matriz[0][0]);

system("pause");

return 0;

}

Ao enviar o array ele trabalha sobre ele ou seja ao enviar para pede_valores() ele esta já a enviar o apontador para o array de inteiros.

//---------

#include <stdio.h>

void pede_valores(int pmatriz[3][3]) {

int i,j;

for (i=0;i<=2;i++) {

for (j=0;j<=2;j++) {

pmatriz[j]=1+j*i*j*j;

}

}

}

int main() {

int i,j,matriz[3][3];

pede_valores(matriz);

for (i=0;i<=2;i++) {

for (j=0;j<=2;j++) {

printf("Resultado: %d",matriz[j]);

}

}

system("pause");

return 0;

}

Editado por web diackne
Link para o comentário
Compartilhar em outros sites

  • 0

Quando você passa uma matriz estática como parametro para uma função você faz da seguinte maneira:

>>Informando a quantidade linhas e colunas:

void teste(int matriz[3][3])

>>informando apenas a quantidade de colunas da matriz:

void teste(int matriz[][3])

Esses são os dois jeitos para se passar um matriz estática como parametro, sempre severá informar a quantidade de colunas dela, pois o programa precisa saber o tamanho do vetor (linha) que a matriz terá.

Para matrizes dinâmicas você passa como parametro assim:

void teste(int **matriz)

Espero ter ajudado =)

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...