C - Funções
Uma função é um grupo de instruções que, juntas, executam uma tarefa. Cada programa C tem pelo menos uma função, que émain(), e todos os programas mais triviais podem definir funções adicionais.
Você pode dividir seu código em funções separadas. Como você divide seu código entre diferentes funções depende de você, mas logicamente a divisão é tal que cada função executa uma tarefa específica.
Uma função declarationinforma ao compilador sobre o nome, o tipo de retorno e os parâmetros de uma função. Uma funçãodefinition fornece o corpo real da função.
A biblioteca padrão C fornece várias funções integradas que seu programa pode chamar. Por exemplo,strcat() para concatenar duas strings, memcpy() para copiar um local da memória para outro local e muitas outras funções.
Uma função também pode ser referida como um método ou uma sub-rotina ou um procedimento, etc.
Definindo uma função
A forma geral de definição de uma função na linguagem de programação C é a seguinte -
return_type function_name( parameter list ) {
body of the function
}
Uma definição de função em programação C consiste em um cabeçalho de função e um corpo de função . Aqui estão todas as partes de uma função -
Return Type- Uma função pode retornar um valor. oreturn_typeé o tipo de dados do valor que a função retorna. Algumas funções realizam as operações desejadas sem retornar um valor. Neste caso, o return_type é a palavra-chavevoid.
Function Name- Este é o nome real da função. O nome da função e a lista de parâmetros juntos constituem a assinatura da função.
Parameters- Um parâmetro é como um espaço reservado. Quando uma função é chamada, você passa um valor para o parâmetro. Esse valor é conhecido como parâmetro ou argumento real. A lista de parâmetros se refere ao tipo, ordem e número dos parâmetros de uma função. Os parâmetros são opcionais; ou seja, uma função pode não conter parâmetros.
Function Body - O corpo da função contém uma coleção de instruções que definem o que a função faz.
Exemplo
Abaixo está o código-fonte para uma função chamada max(). Esta função recebe dois parâmetros num1 e num2 e retorna o valor máximo entre os dois -
/* function returning the max between two numbers */
int max(int num1, int num2) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Declarações de função
Uma função declarationinforma ao compilador sobre o nome de uma função e como chamá-la. O corpo real da função pode ser definido separadamente.
Uma declaração de função tem as seguintes partes -
return_type function_name( parameter list );
Para a função definida acima max (), a declaração da função é a seguinte -
int max(int num1, int num2);
Os nomes dos parâmetros não são importantes na declaração da função, apenas seu tipo é necessário, portanto, o seguinte também é uma declaração válida -
int max(int, int);
A declaração da função é necessária quando você define uma função em um arquivo de origem e chama essa função em outro arquivo. Nesse caso, você deve declarar a função na parte superior do arquivo que está chamando a função.
Chamando uma função
Ao criar uma função C, você dá uma definição do que a função deve fazer. Para usar uma função, você terá que chamar essa função para executar a tarefa definida.
Quando um programa chama uma função, o controle do programa é transferido para a função chamada. Uma função chamada executa uma tarefa definida e quando sua instrução de retorno é executada ou quando sua chave de fechamento de finalização de função é alcançada, ela retorna o controle do programa de volta ao programa principal.
Para chamar uma função, você simplesmente precisa passar os parâmetros necessários junto com o nome da função e, se a função retornar um valor, você pode armazenar o valor retornado. Por exemplo -
#include <stdio.h>
/* function declaration */
int max(int num1, int num2);
int main () {
/* local variable definition */
int a = 100;
int b = 200;
int ret;
/* calling a function to get max value */
ret = max(a, b);
printf( "Max value is : %d\n", ret );
return 0;
}
/* function returning the max between two numbers */
int max(int num1, int num2) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Mantemos max () junto com main () e compilamos o código-fonte. Ao executar o executável final, ele produziria o seguinte resultado -
Max value is : 200
Argumentos de função
Se uma função deve usar argumentos, ela deve declarar variáveis que aceitam os valores dos argumentos. Essas variáveis são chamadas deformal parameters da função.
Parâmetros formais se comportam como outras variáveis locais dentro da função e são criados na entrada na função e destruídos na saída.
Ao chamar uma função, existem duas maneiras pelas quais os argumentos podem ser passados para uma função -
Sr. Não. | Tipo de chamada e descrição |
---|---|
1 | Chamada por valor Este método copia o valor real de um argumento para o parâmetro formal da função. Nesse caso, as alterações feitas no parâmetro dentro da função não afetam o argumento. |
2 | Chamada por referência Este método copia o endereço de um argumento no parâmetro formal. Dentro da função, o endereço é usado para acessar o argumento real usado na chamada. Isso significa que as alterações feitas no parâmetro afetam o argumento. |
Por padrão, C usa call by valuepara passar argumentos. Em geral, isso significa que o código dentro de uma função não pode alterar os argumentos usados para chamar a função.