Por: Eduardo Casavella
Para passar um vetor para uma função usando linguagem C utiliza-se um ponteiro como parâmetro da função. Ao usarmos o ponteiro como parâmetro, na realidade estamos passando o endereço inicial do vetor e não os seus elementos.
Vamos exemplificar uma passagem de vetor em uma função através de um exemplo prático.
O programa a seguir recebe 10 notas e armazena-as em um vetor.
Para efetuar o cálculo da média foi implementada uma função que recebe a quantidade de elementos do vetor e o seu endereço inicial, cujo protótipo é:
float media (int n, float *vnotas);
Posteriormente, no corpo da função efetuamos o processamento que manipula os dados do vetor de modo a calcular a média.
Veja o código da função comentada abaixo:
float media (int n, float *vnotas) { int i; float m = 0, soma = 0; //fazendo a somatória das notas for (i = 0; i < n; i++) soma = soma + vnotas[i]; //dividindo pela quantidade de elementos n m = soma / n; //retornando a média return m; }
A seguir o código fonte completo do exemplo:
#include<stdio.h> #include <stdlib.h> //protótipo da função media float media (int n, float *vnotas); int main (void) { float vnotas[10]; float media_notas; int i; /* leitura das notas */ for (i = 0; i < 10; i++) { printf";Digite os valores das notas: "); scanf("%f", &vnotas[i]); } //chamada da função media_notas = media(10,vnotas); printf ( "\nMedia = %.1f \n", media_notas ); system("pause"); return 0; } /* Função para cálculo da média Parâmetros: Recebe a quantidade de elementos n Recebe o endereço inicial do vetor notas em *vnotas Retorno: Retorna a media na variavel m */ float media (int n, float *vnotas) { int i; float m = 0, soma = 0; //fazendo a somatória das notas for (i = 0; i < n; i++) soma = soma + vnotas[i]; //dividindo pela quantidade de elementos n m = soma / n; //retornando a média return m; }
Tela de execução
Até a próxima!
10 respostas a Passando um vetor para função em C