Funções C ++

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 é com você, mas logicamente a divisão geralmente é tal que cada função executa uma tarefa específica.

Uma função declarationinforma ao compilador 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, funçãostrcat() para concatenar duas strings, função memcpy() para copiar um local da memória para outro local e muitas outras funções.

Uma função é conhecida com vários nomes, como um método ou uma sub-rotina ou um procedimento, etc.

Definindo uma função

A forma geral de uma definição de função C ++ é a seguinte -

return_type function_name( parameter list ) {
   body of the function
}

Uma definição de funçã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

A seguir está o código-fonte para uma função chamada max(). Esta função recebe dois parâmetros num1 e num2 e retorna o maior de ambos -

// 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 max () definida acima, a seguir está a declaração da função -

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, a seguir também está 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 ou invocar essa função.

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 para o 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 <iostream>
using namespace std;
 
// function declaration
int max(int num1, int num2);
 
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int ret;
 
   // calling a function to get max value.
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;
 
   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; 
}

Eu mantive a função max () junto com a função main () e compilei o código-fonte. Durante a execução do 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.

Os 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 de os argumentos serem passados ​​para uma função -

Sr. Não Tipo e descrição da chamada
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 Pointer

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.

3 Chamada por Referência

Este método copia a referência de um argumento para o parâmetro formal. Dentro da função, a referência é usada 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 e o exemplo mencionado acima ao chamar a função max () usando o mesmo método.

Valores padrão para parâmetros

Ao definir uma função, você pode especificar um valor padrão para cada um dos últimos parâmetros. Este valor será usado se o argumento correspondente for deixado em branco ao chamar a função.

Isso é feito usando o operador de atribuição e atribuindo valores para os argumentos na definição da função. Se um valor para aquele parâmetro não for passado quando a função for chamada, o valor padrão fornecido será usado, mas se um valor for especificado, esse valor padrão será ignorado e o valor passado será usado em seu lugar. Considere o seguinte exemplo -

#include <iostream>
using namespace std;
 
int sum(int a, int b = 20) {
   int result;
   result = a + b;
  
   return (result);
}
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   int result;
 
   // calling a function to add the values.
   result = sum(a, b);
   cout << "Total value is :" << result << endl;

   // calling a function again as follows.
   result = sum(a);
   cout << "Total value is :" << result << endl;
 
   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Total value is :300
Total value is :120