Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior Última revisão Ambos lados da revisão seguinte | ||
vetor_matriz [d/mY H:i] laureano |
vetor_matriz [d/mY H:i] laureano |
||
---|---|---|---|
Linha 220: | Linha 220: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | ===== Matrizes como Parâmetros ===== | ||
+ | |||
+ | Quando se coloca um vetor como parâmetro, a Linguagem C passa somente o seu endereço, não fazendo uma cópia na pilha. Portanto, pode-se definir o parâmetro sem a quantidade de elementos, pois como só será recebido o endereço pode-se acessar toda a matriz através deste endereço. | ||
+ | |||
+ | A mesma regra se aplica a matrizes para o caso da primeira dimensão. Pode-se não informar a quantidade de elementos da primeira dimensão. Devido á construção sintática da linguagem, deve-se porém informar as demais dimensões para que o compilador gere o código corretamente. | ||
+ | |||
+ | Veja o exemplo: | ||
+ | <code c> | ||
+ | /* programa vetor_matriz_5.c */ | ||
+ | #include <stdio.h> | ||
+ | |||
+ | void imprime_1(int iVetor[]) /* Não é preciso informar o tamanho do índice.... */ | ||
+ | { | ||
+ | int i; | ||
+ | printf("Primeira Matriz\n"); | ||
+ | for (i=0; i < 5; i++) | ||
+ | { | ||
+ | printf("%d ", iVetor[i]); /* ...mas deve-se tomar cuidado na hora de manipular ao vetor, pois caso o programa “tente” acessar um | ||
+ | índice que não existe, o resultado será indesejado. */ | ||
+ | } | ||
+ | printf("\n\n"); | ||
+ | |||
+ | return; | ||
+ | } | ||
+ | |||
+ | void imprime_2(int iMatriz[][3]) /* Para a primeira dimensão, não é necessário informar a quantidade de índices. Mas para a demais é necessário. */ | ||
+ | { | ||
+ | int i,j; | ||
+ | printf("Segunda Matriz\n"); | ||
+ | for (i=0; i < 3; i++) | ||
+ | { | ||
+ | for (j=0; j < 3; j++) | ||
+ | { | ||
+ | printf("%d ", iMatriz[i][j]); | ||
+ | } | ||
+ | printf("\n"); | ||
+ | } | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int iVetor[5] = {1, 2, 3, 4, 5}; | ||
+ | int iMatriz[3][3] = {{11, 12, 13}, | ||
+ | {21, 22, 23}, | ||
+ | {31, 32, 33}}; | ||
+ | |||
+ | imprime_1(iVetor); | ||
+ | imprime_2(iMatriz); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | --- //[[marcos@laureano.eti.br|Marcos Laureano]] 2008/05/15 16:34// |