A diferença entre argumentos e parâmetros de função em C++

Jinku Hu 12 outubro 2023
A diferença entre argumentos e parâmetros de função em C++

Este artigo explicará as diferenças entre os argumentos e parâmetros da função em C++.

A anatomia das funções em C++

Funções são o bloco de construção comum de qualquer programa relativamente sofisticado. Eles permitem definir as rotinas recorrentes no programa como blocos separados e chamá-los quando o código correspondente precisa ser executado. Dividir um programa em várias funções torna o programa mais modular e fácil de manter e entender. Conseqüentemente, esses programas geralmente são mais fáceis de testar e depurar.

As funções geralmente têm nomes que as identificam de maneira exclusiva; no entanto, alguns conceitos como sobrecarga de função permitem que o programador defina várias funções com o mesmo nome; exploraremos esse recurso nos parágrafos posteriores. Expressões lambda também estão incluídas na combinação, o que fornece uma maneira de definir objetos de função sem nome. A soma de diferentes instruções no bloco de funções é chamada de corpo de função. As funções também têm um tipo de retorno que representa o tipo do valor passado de volta ao chamador.

Outra parte crítica da função é uma lista de parâmetros que denotam as variáveis ​​declaradas como parte da assinatura da função. O chamador geralmente passa alguns valores concretos para inicializar essas variáveis ​​no escopo da função. Os últimos valores são chamados de argumentos e são chamados de inicializadores para os parâmetros da função. Ainda assim, os termos - parâmetros e argumentos podem ser usados ​​indistintamente em alguns contextos.

No programa de exemplo abaixo, mostramos uma função chamada - printVector, que tem apenas um parâmetro (chamado vec) definido em sua assinatura. Quando o processo é invocado na função main, o argumento vec1 é passado para ela. Uma vez que a execução passa para o corpo da função printVector, o parâmetro vec é inicializado com o valor correspondente.

#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

template <typename T>
void printVector(const vector<T> &vec) {
  for (auto &i : vec) {
    cout << i << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> vec1{11, 82, 39, 72, 51, 32, 91};

  printVector(vec1);

  return EXIT_SUCCESS;
}

Resultado:

11; 82; 39; 72; 51; 32; 91;

Conforme mencionado no capítulo anterior, C++ suporta o conceito de sobrecarga de função, que permite ao programador definir várias funções com o mesmo nome. No entanto, essas funções devem diferir pelo número de argumentos que aceitam ou pelos tipos de argumentos.

O programa a seguir abaixo demonstra o uso básico para funções sobrecarregadas que multiplicam dois números do tipo int ou double, respectivamente.

#include <iostream>

using std::cout;
using std::endl;

int multiply(int x, int y) { return x * y; }

double multiply(double x, double y) { return x * y; }

int main() {
  int i1 = 10;
  double d1 = 0.1;

  cout << multiply(i1, i1 + 1) << endl;
  cout << multiply(d1, d1 + 1) << endl;

  return EXIT_SUCCESS;
}

Resultado:

110
0.11
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Function