Lo primero que he marcado en rojo es el prototipo de la función y como vemos dentro declaro 3 variables (short int x, short int y, int operacion). A continuación a las dos primeras variables les asigno un valor dentro de main (línea en rojo Nº2), sin embargo yo no quiero darle un valor a la tercera variable en main, sino en la definición de la función (línea en rojo Nº3).
Esto se le conoce como "no-inicializar una variable" según las guías que he consultado, pero no he encontrado la forma de hacerlo con una función, si no le asigno un valor a "int operacion" dentro de main, me salta error.
Espero haberme explicado bien. Gracias de nuevo, saludos.
A ver si te he entendido.
Tú lo que quieres es darle un valor a la variable resultado dentro de una función, y que el compilador no lo tome como error. ¿Es a eso a lo que te refieres?.
Sí pruebas este código verás que te da error un Warning porque estás usando la variable sin inicializarla:
#include<iostream>
using namespace std;
int funcion(int var1, int var2, int operacion);
int main(void){
int x, y, resultado;
cin>>x>>y;
resultado = funcion(x, y, resultado);
cout<<resultado;
}
int funcion(int var1, int var2, int operacion){
operacion = var1*var2;
return operacion;
}
Y es lógico que lo de, porque aunque tú en la función estás asignandole un valor, el paso que estás haciendo del parametro es por valor (es decir, se realiza una copia) y por tanto, los cambios que realices dentro de la función, no tendrán efecto fuera de ella.
Sin embargo, si en lugar de hacerlo así, lo haces de esta manera:
#include<iostream>
using namespace std;
int funcion(int var1, int var2, int &operacion);
int main(void){
int x, y, resultado;
cin>>x>>y;
resultado = funcion(x, y, resultado);
cout<<resultado;
}
int funcion(int var1, int var2, int &operacion){
operacion = var1*var2;
return operacion;
}
Entonces el compilador ya no te mostrará el Warning que sí lo hacía antes puesto que estás inicializando la variable dentro de la función (estás haciendo un paso por referencia, y por tanto las modificaciones en la variable se mantienen).
Espero que fuese eso a lo que te referías. Sí no es así, pues comenta e intentaré ayudarte.
Saludos.