significado - Confusión sobre punteros y referencias en C++
punteros c++ (1)
En el primer ejemplo, se llama a std::swap
, debido a que using namespace std
. El segundo ejemplo es exactamente el mismo que el primero, por lo que es posible que no tenga uso.
De todos modos, si cambia el nombre de su función a my_swap
o algo así (y cambia cada ocurrencia), entonces el primer código no debería funcionar, como se esperaba. O elimine el using namespace std
y llame explícitamente a std::cin
y std::cout
. Recomendaría la segunda opción.
Tengo un montón de código como este:
#include <iostream>
using namespace std;
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a;
int b;
a = 7;
b = 5;
swap(a, b);
cout << a << b;
return 0;
}
Este código hace el proceso de intercambio como lo que quería intercambiar exactamente 2 números
Pero cuando quiero dos números del usuario de la siguiente manera;
int a;
int b;
cin >> a;
cin >> b;
swap(a, b);
cout << a << b;
El compilador me da un error de entero a * error de entero que es el esperado. ¿Por qué el primer código hace el intercambio correcto aunque no utilicé el método con el operador &
?