Hola gente, si defino una función de este modo:
int funcion(parametro){
return 0;
}
cuando llamo la función el dato pasa por valor... ¿esta bien?
Pero si el dato que paso es un arreglo:
String nombres[4];
nombres = completarListadoDeNombres(nombres);
Sería una redunancia??? el parámetro nombres (arreglo de string) estaría pasando por referencia?? con lo cuál podría operar sobre los datos en la función invocada, y esta debería ser de tipo void. Podría hacerlo así??
String nombres[4];
completarListadoDeNombres(nombres);
...
...
...
...
void completarListadoDeNombres(para){
bla bla ablba
acciones sobre el dato para completando sus valores
}
Uy... espero se entienda.
Muchas gracias de nuevo
No habras 2 hilos del mismo tema.
Concentra esto mismo en tu post abierto.
gracias.
Todo lo que involucre código se postea entre tags </>
Lee las normas por favor!
Cerraremos el hilo
HOla, es que en realidad son dos preguntas diferentes.
Esta es sobre como pasan los parámetros que no son tipos básicos... No recuerdo bien ahora, pero creo que en Java es así como describo acá, y la pregunta era sobre como funciona en este lenguaje.
Gracias
Si la función pide un "dato primitivo", entonces es paso por valor.
Si la función parece pedir un "array", objeto o puntero (nombre de la variable pero con un * al principio), entonces es paso por referencia.
Muuuuuuuuuuuuchas gracias por la respuesta.
Te comento, no me esta andando la función.... pregunto (por ahí es una burrada) no estoy seguro como declarar el tipo del parámetro que se envía en la función... porque en este caso que consulto es un arreglo de String.... pero estoy presisando además un arreglo bidimensional...
Mi idea sería
void nombreFuncion(String arregloString){
}
Pero así me suena que es simplemente un String el parámetro...
¿cómo debería declararlo?? Te (les) pregunto porque hice mil pruebas y no aduvo ninguna
En Java creo que era nombre_función(String[] miarreglo)
¿acá.... cómo sería???
PD: Aguante Python... ja
Abrazo apra todo el mundo y muchas gracias
gracias mil^3
Perdona pero que parte no entiendes de que todo lo que es código va entre tags.
Selecciona el código y luego click en </>
Listo, no seas nervioso...
NO encontraba las etiquetas!!!
La cuestión de fondo sigue pendiente.
Saludos
Para arreglo unidimensional:
void nombreFuncion(String arregloString[])
Para arreglo bidimensional:
void nombreFuncion(String arregloString[][])
Para un arreglo de cualquier cantidad de dimensiones (incluso es válido para una sola variable):
void nombreFuncion(String *arregloString)
El cuidado que hay que tener en esta forma, es que se debe saber de antemano de cuántas dimensiones es el arreglo.
Un recordatorio más: este lenguaje es el C++; por lo tanto, el manejo de arreglos se debe hacer con cuidado. El programa no revisa límites en tiempo de ejecución, por lo que se podría corromper la memoria en un descuido.
10000^3 de gracias.
Justo me había encontrado con este documento (muy interesante) sobre punteros. Y lo estaba intentando de desantrañar... Pero creo que me has simplificado mucho el problema con las dos primeras declaraciones.
Graciasssssssssssss y saludos.
PD: cuando lo tenga implementado posteo la solución por la que me he inclinado.