Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declara um procedimento
  2. Declara uma função
  3. Ordem de declaraçao e uso
  4. Funções/procedimentos com parâmetros
  5. Passagem por valor e referência
  6. sobrecarga de função
  7. procedimento/função com parâmetro
  8. função com múltiplos retornos
  9. parametros variáveis (...)

O assunto Função foi visto em Portugol: Funções e o assunto Procedimento foi visto em Portugol: Procedimentos.

Procedimentos em C++, como em C, são "funçoes" que não retornam nenhum tipo de valor ao término de sua execução. A palavra reservada void é utilizada informação que não há retorno.

Sintaxe
void nome_procedimento()
{
  //corpo procedimento
}
Onde
void: palavra reservada que não haverá retorno e que a declaração é uma procedimento.

Para invocar um procedimento, utilizamos seu nome em um local desejado para seu uso:

Exemplo 1
#include <iostream>

void procedimento()
{
    cout << "um procedimento sem retorno";
}

void main()
{
    procedimento();
}
Saída
um procedimento sem retorno

Função em C++, diferente de procedimentos, retornam um valor durante a sua execução. Qualquer tipo de dado dentre os já estudados pode ser utilizado como retorno além dos tipos fornecidos pela biblioteca padrão C++.

Sintaxe
tipo_retorno nome_funcao()
{
  //corpo função

  return valor;
}
Onde
tipo_retorno: Tipo de dado que será retornado pela função
return: Comando para retornar um valor de uma função

Para invocar uma função, utilizamos seu nome em um local desejado para seu uso:

Exemplo 2
#include <iostream>

int minha_funcao()
{
    int variavel;
    //corpo omitido
    return valo;
}

void main()
{
    int retorno = minha_funcao();
} 

As funções e procedimentos podem ser criados antes ou depois da função main, levando em consideração que possuímos apenas um arquivo main.c. Na declaração de funções e procedimentos, podemos utilizar as "regras":

  1. Criando a função/procedimento antes da main, essa função pode ser chamada normalmente.
  2. Criando a função/procedimento após a main, um protótipo da função deve ser declarado antes da main(main.c).
Exemplo 3
#include <iostream>

void funcao2(); //protótipo da função 2

void funcao1()
{
    printf("funcao1 \n");
}

int main ()
{
    funcao1();
    funcao2();
    return 0;
}

void funcao2()
{
    printf("funcao2 \n");    
}
Saída
funcao1
funcao2

Em uma futura seção, vamos aprender a separa os nossos programas em arquivos .cpp e .hpp para melhor organização. A utilização do exemplo acima foi feita apenas para compreensão, não sendo recomendada para programas muito complexos.

Para a passagem de argumentos para funções em C++, semelhante a C, declaramos todos os parâmetros de acordo com a sintaxe já vista:

Sintaxe
tipo_retorno nome_funcao(tipo_dado param1, tipo_dado param2, tipo_dado paramN)
{
  //corpo função
  return valor_retorno; 
}
void nome_procedimento(tipo_dado param1, tipo_dado param2,tipo_dado paramN)
{
  //corpo proc.
}
Onde
param1..N: lista de parâmetros separados por vírgula
tipo_dado: tipo de dado do parâmetro
tipo_retorno: tipo de dado de retorno
Exemplo 4
using namespace std;

void funcao(int a, char b){
    cout<< a << endl;
    cout<< b << endl;
}
Saída
-

A passagem de argumentos para uma função é feita como na linguagem C, passamos o nomes das variáveis ou valores separados por (,).

Sintaxe
funcao(argumento1, argumento2, argumentoN);
Exemplo 5
#include <iostream>

using namespace std;

void funcao(int a, char b){
    cout<< a << endl;
    cout<< b << endl;
}
int main()
{
    funcao(1,'Z');
    return 0;
}
Saída
1 'Z'

Em C++, funções também pode ser passadas como argumento. Esse assunto pode ser visto com mais detalhes em C++ Básico: Ponteiro.

O assunto passagem de argumento por referencia e valor foram vistos em Portugol: Passagem de Argumentos e em C Funções: Passagem por Valor e Referência.

Em C++, a passagem de argumentos por valor e referência seguem as mesmas regras da linguagem C. Utilizamos o tipo de dado reference(&) que informa que o parâmetro irá receber um valor por referência.

Quando não usamos (&) na declaração de nossos parâmetros, estamos informando que o argumento será passado como valor.

Exemplo 6
#include <iostream>
using namespace std;

void funcao1(int v1){
    v1 = 999; //alteração apenas em v1 interno
}

void funcao2(int &v1){
    v1 = 999;
}

int main()
{
    int v1 = 888; 
    cout << v1 << endl;
    funcao1(v1); //passando por valor
    cout << v1 << endl;
    
    cout << v1 << endl;   
    funcao2(v1); //passando por referência
    cout << v1<< endl;
    return 0;
}
Saída
888
888
888
999
  1. 28/07/2025 - revisão 3 - ajustes pontuais e em sintaxes
  2. 30/09/2024 - revisão 3 - Remoção de intro 'Funções'; Correções e ajustes pontuais
  3. 30/08/2024 - revisão 2 - Correção em links de objetivos
  4. 09/02/2024 - revisão 1 - correção em navegação, css, exemplos e erros gramaticais
  5. 30/06/2023 - versão inicial