Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior | |||
definicao_funcao [d/mY H:i] laureano |
definicao_funcao [d/mY H:i] (atual) laureano |
||
---|---|---|---|
Linha 46: | Linha 46: | ||
Veja o exemplo: | Veja o exemplo: | ||
+ | <code c> | ||
+ | /* programa definindo_funcao.c */ | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int soma (int, int); /* Declaração da função (protótipo da função. | ||
+ | Esta declaração indica que a função soma irá receber 2 valores inteiros e vai retornar 1 valor inteiro */ | ||
+ | |||
+ | int main (void) | ||
+ | { | ||
+ | int iValor_a; | ||
+ | int iValor_b; | ||
+ | int iResultado; | ||
+ | |||
+ | printf("Entre com os valores:"); | ||
+ | scanf("%d %d", &iValor_a, &iValor_b); | ||
+ | |||
+ | iResultado = soma(iValor_a, iValor_b); /* chamada da função */ | ||
+ | |||
+ | printf ("Soma : %d\n", iResultado); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | int soma (int a, int b) /* função soma que recebe 2 inteiros */ | ||
+ | { | ||
+ | return a + b; /* retornar 1 valor inteiro */ | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== Escopo de Variáveis ===== | ||
+ | Entende-se como escopo de variáveis a área onde o valor e o nome dela tem significado. Pode-se ter dois tipos de variáveis na Linguagem C. O primeiro tipo é a variável global. Uma variável é global quando a mesma é definida fora de qualquer função. Esta variável pode ser usada em qualquer função e o significado dela abrange todo o programa fonte. | ||
+ | As variáveis locais são definidas dentro de funções e o seu significado é somente válido dentro da função. Assim têm-se duas variáveis com o mesmo nome em funções diferentes. | ||
+ | |||
+ | |||
+ | ==== Variáveis Globais ==== | ||
+ | As variáveis globais são definidas fora de qualquer função e o seu nome é válido para todo o programa. Qualquer função que alterar o seu conteúdo estará alterando para todo o programa pois estas variáveis ficam em uma área de dados disponível para todo o programa. | ||
+ | |||
+ | ==== Variáveis Locais ==== | ||
+ | Quando uma variável é definida dentro de uma função, está sendo definindo uma variável local à função. Esta variável utiliza a pilha interna da função como memória, portanto ao final da função este espaço de memória é liberado e a variável não existe mais. Portanto a definição da variável só é valida dentro da função. | ||
+ | |||
+ | Os parâmetros de uma função também são considerados variáveis locais e também utilizam a pilha interna para a sua alocação. | ||
+ | |||
+ | <code c> | ||
+ | /* programa escopo_variavel.c */ | ||
+ | |||
+ | #include <stdio.h> | ||
+ | |||
+ | int soma (int, int); | ||
+ | int diferenca (int, int); | ||
+ | void le_valores(void); | ||
+ | |||
+ | int G_iValor_a; /* Declarando as variáveis como públicas, ou seja, elas estarão disponíveis para uso em todo o programa. */ | ||
+ | int G_iValor_b; | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int iResultado; /* Variável local e portanto somente disponível para a função main */ | ||
+ | |||
+ | le_valores(); | ||
+ | |||
+ | printf("Soma : %d\n", soma (G_iValor_a, G_iValor_b)); /* uso das variáveis públicas declaradas anteriormente. */ | ||
+ | |||
+ | printf("Diferenca : %d\n", diferenca (G_iValor_a, G_iValor_b)); /* uso das variáveis públicas declaradas anteriormente. */ | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | void le_valores(void) | ||
+ | { | ||
+ | printf("Entre com os valores:"); | ||
+ | scanf("%d %d", &G_iValor_a, &G_iValor_b); /* uso das variáveis públicas declaradas anteriormente */ | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | int soma (int a, int b) /* Variáveis declaradas como parâmetros de função sempre são locais, portanto as variáveis a e b | ||
+ | estão disponíveis para uso somente na função soma. */ | ||
+ | { | ||
+ | int iResultado; /* Variável local e portanto somente disponível para a função soma. Importante: não é a mesma variável definida anteriormente. */ | ||
+ | |||
+ | iResultado = a + b; | ||
+ | return iResultado; | ||
+ | } | ||
+ | |||
+ | int diferenca (int a, int b) /* Variáveis declaradas como parâmetros de função sempre são locais, portanto as variáveis a e b estão disponíveis | ||
+ | para uso somente na função diferenca, embora na função soma também tenha sido utilizado o mesmo nome para as variáveis. */ | ||
+ | { | ||
+ | int iResultado; | ||
+ | |||
+ | iResultado = a - b; | ||
+ | return iResultado; | ||
+ | } | ||
+ | </code> |