Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] manipular array desde funcion

Estas en el tema de manipular array desde funcion en el foro de C/C++ en Foros del Web. hola, quiero manipular el contenido de un string tengo una serie de funciones cuando accedo a estas no cambia, tengo que crear una variable global ...
  #1 (permalink)  
Antiguo 04/03/2015, 15:19
Ic4r0
Invitado
 
Mensajes: n/a
Puntos:
manipular array desde funcion

hola, quiero manipular el contenido de un string tengo una serie de funciones cuando accedo a estas no cambia, tengo que crear una variable global o como deberia proceder para enviar la informacion del array a la funcion para manipularla?
pd: sin funciones me funciona pero con ellas no... soy nuevov en esto asi que no se como solucionarlo.

Última edición por Ic4r0; 04/03/2015 a las 15:26
  #2 (permalink)  
Antiguo 04/03/2015, 15:40
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: manipular array desde funcion

Hola; ¿el problema es de C o C++?
¿Cuando dices "el contenido de un string..." ¿te estás refiriendo a un array de caracteres de C?

De todos modos, yo creo que lo mejor sería que pusieras un ejemplo de código mínimo que pueda compilarse y que muestre el caso. Es un pequeño esfuerzo al hacer la pregunta que puede hacer que los que saben la respuesta pongan otro tanto de esfuerzo en responderte. ¿Qué te parece?
  #3 (permalink)  
Antiguo 04/03/2015, 15:47
Ic4r0
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: manipular array desde funcion

el problema es en c, no se trata de un string si no de una matriz donde guardar temperaturas.
tenemos un menú donde seleccionar que hacer en el programa, inicializamos la matriz... todo correcto pero en las funciones cuando intento añadir información o mostrarla no funciona y se vuelve a inicializar...
  #4 (permalink)  
Antiguo 04/03/2015, 15:48
 
Fecha de Ingreso: octubre-2013
Mensajes: 44
Antigüedad: 10 años, 6 meses
Puntos: 5
Respuesta: manipular array desde funcion

En C/C++, cuando pasas una variable a una función lo que le pasas es una copia del contenido de esa variable. De esta forma, por mucho que modifiques esa copia, no verás el resultado en la variable original:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. void cambiar(string str){
  7.  
  8.     str[0] = 'H';
  9. }
  10.  
  11. int main(void){
  12.  
  13.     string cadena = "hola";
  14.  
  15.     cout << cadena << endl;
  16.     cambiar(cadena);
  17.     cout << cadena << endl;
  18.    
  19.     return 0;
  20. }

A esto se le llama como "paso por valor". Para poder modificar la variable original, es necesario realizar un "paso por referencia". La idea, es que en vez de pasar el contenido, se pasa la dirección de memoria de la variable, de esta forma podemos modificar la variable original y no una copia. Para ello en C se utilizan los conocidos "punteros", los cuales se expresan con el carácter "*" seguido de la variable (en C++ se puede utilizar además las "referencias" las cuales se expresan con el carácter "&" seguido de la variable).

Aquí te dejo un ejemplo utilizando referencias (ojo, solo funciona en C++):

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. void cambiar(string &str){  //Utilizar operador dirección/referencia
  7.  
  8.     str[0] = 'H';
  9. }
  10.  
  11. int main(void){
  12.  
  13.     string cadena = "hola";
  14.  
  15.     cout << cadena << endl;
  16.     cambiar(cadena);
  17.     cout << cadena << endl;
  18.    
  19.     return 0;
  20. }

En resumen, deberías buscar información sobre el "paso por referencia". De todas formas, no estaría de más que especificaras un poco más tu problema como ya te ha comentado el usuario de arriba.
  #5 (permalink)  
Antiguo 04/03/2015, 15:54
Ic4r0
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: manipular array desde funcion

muchas gracias, tranquilo ya tengo ciertos conocimientos de punteros, pense que podria pasar el array y modificarlo....

Etiquetas: funcion, manipular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:41.