sexta-feira, 29 de outubro de 2010

Passando matrizes para uma função

A questão de passar muitos valores para uma função já foi discutida no post sobre como passar vetores para uma função, portanto, não pretendo me repetir.

Passar uma matriz para uma função é muito parecido com passar um vetor, mas é importante saber como uma matriz fica representada na memória do seu computador para entender o modo certo de fazer isso.

Uma matriz, na verdade, não é armazenada por linhas e colunas como estamos acostumados a representá-las. Na memória do seu computador os elementos da sua matriz aparecem sequencialmente. Imaginando a matriz do post anterior:
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |

Ela seria representada na memória da seguinte forma:

| 1 2 3 4 5 6 7 8 9 |

Portanto, quando fizéssemos referência, na função que recebeu a matriz, ao elemento matriz[1][2], por exemplo, que representaria o valor 6, como ela encontraria esse elemento? O computador vai saber que ela está na linha 2 (de índice 1), mas não sabe quantos elementos para frente ele tem que andar na memória. Por isso, o cabeçalho da função auxiliar que receberá a matriz é declarado da seguinte forma:

tipoDaFunção nomeDaFunção (int matriz[][col])

Ao chamar essa função, como nos vetores, basta passar o nome da matriz:
...
nomeDaFunção (matriz);
...

E por hoje é só.

Até a próxima galera!

Nenhum comentário:

Postar um comentário