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.