Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo Peixoto

[Resolvido] Exercício de parâmetros C++

Recommended Posts

Pessoal estou estudando parâmetros mas não está entrando direito in my head, poderam esboçar a resolução do seguinte exercício?:

 

5) Faça uma função que incremente o valor de um número passado por parâmetro. Utilize a passagem de parâmetro por referência para fazer o incremento.

 

Grato !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa é verdade, é por parametro haha, então é o seguinte, nesse tipo de passagem voce faz uma copia do valor que voce possui, portanto para de fato mudar o valor da variavel que voce tem terá de retornar um valor da funcao e atribuir isso a sua variavel.

 

int funcao(int variavel)
{
  return (variavel+10)
}
main(){
int variavel;

scanf("%d",&variavel);
variavel = funcao(variavel);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que estejam confundindo 'passagem por parâmetro' e 'passagem por referência'. Como a pergunta é sobre C++, não vou tentar responder. Se fosse em C, eu argumentaria que 'passagem por referência' é simplesmente 'passagem por valor do endereço' do argumento.

 

Independente da linguagem que se usa, é bom seguir a convenção de que parâmetro é o que uma função recebe, e argumento é o que se passa para ela. Então:

 

funcao func(param1, param2) 
{
   // param1 e param2 são parâmetros de func
}

// ...

func(1, 2); // 1 e 2 são argumentos passados para func

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Faz-se passagem por referência em C++ usando o operador & nos parâmetros.

 

Exemplo:

 

#include <iostream>

void sum10( int &value )
{
   value += 10;
}

int main( void )
{
   int valorTeste = 0;

   std::cout << "O valorTeste antes da chamada à sum10() é: " << valorTeste << std::endl;
   sum10(valorTeste);

   std::cout << "O valorTeste após a chamada à sum10() é: " << valorTeste << std::endl;

   return 0;
}

 

O output será:

 

O valorTeste antes da chamada à sum10() é: 0

O valorTeste após a chamada à sum10() é: 10

 

Se, por acaso, usássemos C, teríamos que passar um ponteiro da variável e incrementar o ponteiro:

 

#include <stdio.h>

void sum10( int *value )
{
   *value += 10;
}

int main( void )
{
   int valor_teste = 0;

   printf("O valorTeste antes da chamada à sum10() é: %d\n", valor_teste);
   sum10(&valor_teste);

   printf("O valorTeste após a chamada à sum10() é: %d\n", valor_teste);

   return 0;
}

 

O output será o mesmo.

 

Lembrando que o primeiro exemplo só funciona em C++, enquanto o segundo funciona em C e C++. O segundo modo é mais um "hack" do que uma solução verdadeira. Por isso, e como você quer passagem por referência em C++, imagino que você esteje à procura do primeiro modo.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahnn, eu expliquei no meu último post... Você leu os outros comentários?

 

 

Abraços :D

Li sim Renato brigadão pela explicação vai me ajudar bastante, embora não seja específico ao meu problema.

 

 

Mas Vlw mesmo !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.