Yo cuando estuve estudiando el lenguaje C, vi que se podía pasar parámetros a una función de diferentes formas, están por "valor" y por "referencia", a sí que quise repasar haciendo un pequeño programa que usa la clásica función swap que sirve para cambiar valores a 2 números, me complicó mas el de pasar por referencia, les dejo el código, la función swap1 y swap3 no tuve problemas, mi problema es el swap2, yo he visto que algunos pone el & en los parametros, a mi me acomodaba mas por punteros, pero igual quiero saber de la otra forma, también les dejo lo que me salió de error, uso Netbeans 7.3, compilador cygwin.
Saludos a todos
Código (c) [Seleccionar]
#include <stdio.h>
void swap1(int *x, int *y){
int aux = *x;
*x = *y;
*y = aux;
}
void swap2(int &x, int &y){
int aux = x;
x = y;
y = aux;
}
void swap3(int x, int y){
int aux = x;
x = y;
y = aux;
}
int main(){
int x = 2;
int y = 3;
printf("El valor de X e Y respectivamente en el main es %i y %i.\n\n",x,y);
swap1(&x,&y);
printf("El valor de X e Y despues de la funcion swap1 es %i y %i.\n\n",x,y);
swap2(x,y);
printf("El valor de X e Y despues de la funcion swap2 es %i y %i.\n\n",x,y);
swap3(x,y);
printf("El valor de X e Y despues de la funcion swap3 es %i y %i.\n\n",x,y);
getchar();
return 0;
}
Código [Seleccionar]
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin_4.x-Windows/ejemplo06.exe
make[2]: Entering directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
mkdir -p build/Debug/Cygwin_4.x-Windows
rm -f build/Debug/Cygwin_4.x-Windows/main.o.d
gcc -c -g -MMD -MP -MF build/Debug/Cygwin_4.x-Windows/main.o.d -o build/Debug/Cygwin_4.x-Windows/main.o main.c
main.c:11:16: error: expected ';', ',' or ')' before '&' token
void swap2(int &x, int &y){
^
nbproject/Makefile-Debug.mk:66: recipe for target 'build/Debug/Cygwin_4.x-Windows/main.o' failed
make[2]: Leaving directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
nbproject/Makefile-Debug.mk:59: recipe for target '.build-conf' failed
make[1]: Leaving directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [build/Debug/Cygwin_4.x-Windows/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)
Saludos a todos