elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?  (Leído 9,665 veces)
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
[Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« en: 1 Octubre 2012, 19:31 pm »

No se si se entiende la pregunta, a ver que lo explico, por ejemplo, yo tengo una variable entera int a = 2; y una funcion cualquiera que modifica su valor, entonces antes de llamar a la funcion su valor inicial es 2, al llamar la funcion este valor cambia, la pregunta es, ¿despues de que se ejecute la funcion y se vuelva a main(), el valor de a seguira siendo 2 o habra adoptado el valor que se le da en la funcion?

No se si me he explicado correctamente.

Saludos.


« Última modificación: 1 Octubre 2012, 19:53 pm por Caster » En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #1 en: 1 Octubre 2012, 19:42 pm »

creo k el valor se quedara cambiado.


En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #2 en: 1 Octubre 2012, 19:52 pm »

Pues nada mejor que programarlo y ver que ocurre, he hecho este programa:

Código
  1. #include <stdio.h>
  2.  
  3. void modificar(int a) {
  4. a *= 3;
  5. printf("\n\na = %d (desde la funcion, modificando el valor)", a);
  6. return ;
  7. }
  8.  
  9. int main() {
  10.  
  11. int a = 2;
  12.  
  13. printf("\na = %d (desde main, antes de llamar a la funcion)", a);
  14. modificar(a);
  15. printf("\n\na = %d (desde main, despues de llamar a la funcion)", a);
  16. }
  17.  
  18.  

Y el resultado ha sido:

Citar
a = 2 (desde main, antes de llamar a la funcion)
a = 6 (desde la funcion, modificando el valor)
a = 2 (desde main, despues de llamar a la funcion)

Por los resultados puedo saber que si, que realmente el valor solo cambia dentro de la funcion, para el resto del programa seguiria teniendo el valor 2.

Saludos y gracias por responder.
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #3 en: 1 Octubre 2012, 19:59 pm »

no lo sabia.
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #4 en: 1 Octubre 2012, 20:03 pm »

Pues siempre se aprende algo mas, gracias a mi duda tu tambien has aprendido algo  :D
En línea

overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #5 en: 1 Octubre 2012, 20:33 pm »

Eso es básico, alcance de las variables vamos. La variable a es declarada y definida en main() por lo que es considerada como variable local si la pasas como argumento a una función, por mucho que modifiques su valor no cambiará ya que la variable que pretendes "modificar" sigue siendo local a main a pesar de tener el mismo nombre que en la otra función. Si lo que quieres es modificarla pasa la variable por referencia, ahí ya hablamos de otra cosa o si lo prefieres puedes usar punteros o los 2.

Punteros y Referencias:

Código
  1. #include <stdio.h>
  2.  
  3. void modificar(int &a) {
  4. a *= 3;
  5. printf("\n\na = %d (desde la funcion, modificando el valor)", a);
  6. return ;
  7. }
  8.  
  9. int main() {
  10.  
  11. int *a = new int(2);
  12.  
  13. printf("\na = %d (desde main, antes de llamar a la funcion)", *a);
  14. modificar(*a);
  15. printf("\n\na = %d (desde main, despues de llamar a la funcion)", *a);
  16. getchar();
  17. }
  18.  
  19.  

Punteros:

Código
  1. #include <stdio.h>
  2.  
  3. void modificar(int *a) {
  4. *a *= 3;
  5. printf("\n\na = %d (desde la funcion, modificando el valor)", *a);
  6. return ;
  7. }
  8.  
  9. int main() {
  10.  
  11. int *a = new int(2);
  12. printf("\na = %d (desde main, antes de llamar a la funcion)", *a);
  13. modificar(a);
  14. printf("\n\na = %d (desde main, despues de llamar a la funcion)", *a);
  15. getchar();
  16. }
  17.  
  18.  

Referencia:

Código
  1. #include <stdio.h>
  2.  
  3. void modificar(int &a) {
  4. a *= 3;
  5. printf("\n\na = %d (desde la funcion, modificando el valor)", a);
  6. return ;
  7. }
  8.  
  9. int main() {
  10.  
  11. int a = 2;
  12.  
  13. printf("\na = %d (desde main, antes de llamar a la funcion)", a);
  14. modificar(a);
  15. printf("\n\na = %d (desde main, despues de llamar a la funcion)", a);
  16. getchar();
  17. }
  18.  
« Última modificación: 1 Octubre 2012, 20:42 pm por overxfl0w13 » En línea

[/url]
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #6 en: 1 Octubre 2012, 20:40 pm »

Los punteros los tratan mas adelante en el libro que estoy leyendo, asi que voy a dejarlos para cuando toque, he compilado el codigo que has dejado y me da el sigueinte error:

Citar
3:20: error: expected ';' , ',' or ')' before '&' token
En línea

overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #7 en: 1 Octubre 2012, 20:53 pm »

Los punteros los tratan mas adelante en el libro que estoy leyendo, asi que voy a dejarlos para cuando toque, he compilado el codigo que has dejado y me da el sigueinte error:


Pero el ámbito o alcance de las variables ya se supone que lo tendrías que haber visto. He compilado los 3 códigos y no me da ningún error en ninguno de los 3 tio, mira a ver si lo has copiado bien :)
En línea

[/url]
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #8 en: 1 Octubre 2012, 21:00 pm »

como aprendo por libre de momento.

me pueden decir una rapida definición de lo que són los punteros?
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #9 en: 1 Octubre 2012, 21:36 pm »

Pero el ámbito o alcance de las variables ya se supone que lo tendrías que haber visto.

Pues no te digo que no, lo de las variables hace mucho que lo vi, hace unos meses, y este verano lo deje completamente, y ahora lo retome desde donde lo deje, en las estructuras de control, asi que de algunas cosas ya no me acuerdo, pero poco a poco las ire recordando, para eso esta el libro.

He compilado los 3 códigos y no me da ningún error en ninguno de los 3 tio, mira a ver si lo has copiado bien :)

Es exactamente el mismo codigo, es un copia y pega de lo que has posteado tu y me sigue dando el fallo.

como aprendo por libre de momento.

me pueden decir una rapida definición de lo que són los punteros?

Segun mi libro:

Citar
Un puntero es una variable que representa la posicion (en vez del valor)de otro dato.

Lo que entiendo yo, es una variable pero en vez de tratar con valores se refiere a la posicion de la misma en la memoria.

Saludos
« Última modificación: 1 Octubre 2012, 21:44 pm por Caster » En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines