Ir ao conteúdo
  • Cadastre-se

Referência na chama de função


Visitante

Posts recomendados

Olá,

 

Por que a chamada de função do 1o. exemplo só funciona se eu passar o argumento como referência e a do o segundo exemplo funciona passando o argumento como valor?

 

1:

#include <iostream>
using namespace std;

void doubleIt(int*); 

int main(){
	int num;

	cout << "Insira numero: ";
	cin >> num;

	doubleIt(&num); //REFERÊNCIA OBRIGATÓRIA, POR QUÊ??
	cout << "\nDobro na Main = " << num << endl;
	return 0;
}

void doubleIt(int* x){
	cout << "\nNumero antes do dobro: " << *x << endl;
	*x *=2;
	cout << "\nNumero dobrado pela funcao: " << *x << endl;
}

2:

 

#include <iostream>
using namespace std;

int swap(int*, int*);

int main(){
	int primeiro = 1;
	int segundo = 2;
	swap(primeiro, segundo); //SEM REFERÊNCIA
	cout << "\n\n" << primeiro << " " << segundo << endl;
}

int swap(int *x, int *y){
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
}

 

Link para o comentário
Compartilhar em outros sites

Em ambos os casos você deve ouvir um alerta

Ainda sim vai copilar mesmo com alertas e tudo.

 

Interessante ressaltar que, quando passamos argumentos em parâmetros de tipos semelhantes

acontece o cast automático de valor, falando do segundo caso o programa entende 1 e 2 como sendo os locais na memória, bem se estes locais não são usados nada ocorrerá, caso contrário haverá acesso violado à memória, e trava tudo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...