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 10,751 veces)
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



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

no entendi demasado pero me vendra bien para saber de k va


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #11 en: 2 Octubre 2012, 15:55 pm »

Es exactamente el mismo codigo, es un copia y pega de lo que has posteado tu y me sigue dando el fallo.
Eso es debido a que la declaración de una referencia:
Código
  1. void modificar(int &a) {
Y la reserva de memoria mediante "new":
Código
  1. int *a = new int(2);
Son parte del lenguaje C++ (pero no de C).

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #12 en: 2 Octubre 2012, 18:54 pm »

Eso es debido a que la declaración de una referencia:
Código
  1. void modificar(int &a) {
Y la reserva de memoria mediante "new":
Código
  1. int *a = new int(2);
Son parte del lenguaje C++ (pero no de C).

Un saludo

De todas formas el uso de punteros, las referencias y la reserva mediante new ha dicho que son puntos a tratar en próximos temas del libro que está siguiendo, nunca viene mal conocerlo :)
En línea

[/url]
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #13 en: 2 Octubre 2012, 19:48 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
Sólo necesitas saber ahora que puedes pasar a una función un parámetro o variable  por valor -que es lo que has visto hasta ahora- y por referencia -que hace uso de punteros y es lo que te queda por ver-. La diferencia fundamental es que en el paso por valor, en la función donde está declarada la variable, su valor no cambia aún después de "pasar" por la función, mientras que en el paso por referencia sí puede cambiar el valor de la variable.
Te dejo el código funcionando para los dos métodos:
Código
  1. #include <stdio.h>
  2.  
  3. void modificar(int a)
  4. {
  5. a *= 3;
  6. printf("\n\na = %d (desde la funcion, modificando el valor)", a);
  7. return ;
  8. }
  9. void modificar1(int *a)
  10. {
  11. *a *= 3;
  12. printf("\n\na = %d (desde la funcion, modificando el valor)", *a);
  13. return ;
  14. }
  15. int main()
  16. {
  17.  
  18. int *a = 2;
  19.    printf("\n\nPaso por valor\n");
  20. printf("\na = %d (desde main, antes de llamar a la funcion)", a);
  21. modificar(a);
  22. printf("\n\na = %d (desde main, despues de llamar a la funcion por valor)", a);
  23. printf("\n\nPaso por referencia con puntero\n");
  24. printf("\na = %d (desde main, antes de llamar a la funcion)", a);
  25. modificar1(&a);
  26. printf("\n\na = %d (desde main, despues de llamar a la funcion por referencia)", a);
  27.  
  28. printf("\n\na = %d (desde main, OTRA VEZ antes de llamar a la funcion)", a);
  29. modificar1(&a);
  30. printf("\n\na = %d (desde main, despues de llamar a la funcionpor referencia )", a);
  31.        return 0;
  32. }
Por si te animas a empezar  a leer sobre punteros, aquí va un ejemplo:
Código
  1. #include <stdio.h>
  2. int main() {
  3.    int i=0,*puntero,*pmat;
  4.    int valor = 52;
  5.    int mat [10];
  6.    mat[0]=10, mat[1]=30,mat[2]=50,mat[3]=60;
  7.    puntero = &valor;
  8.    printf("puntero apunta a %p\n", puntero);
  9.    printf("la direccion de memoria de &valor es %p\n", &valor);
  10.    printf("el valor de 'valor' es %d\n", valor);
  11.    printf("el valor de aquello a lo que apunta *puntero es %d\n", *puntero);
  12.    *puntero += 25;
  13.    printf("el valor de aquello a lo que apunta *puntero += 25 es %d\n\n\n", *puntero);
  14.  
  15.    pmat=&mat[0] ;//<=== pmat "apunta=da" a la direccion de mat[0]
  16.    printf("pmat apunta a la direccion %p\n\n", pmat);
  17.    printf("el valor de aquello a lo que apunta *pmat=mat[0] es %d\n\n", *pmat);//10
  18.  
  19.    i=*++pmat;//<=== pmat "apunta" a la direccion de mat[1]
  20.    printf("el valor de aquello a lo que apunta *++pmat=mat[1] es %d\n\n", i);//30
  21.  
  22.    i=*pmat+1;
  23.    printf("el valor de aquello a lo que apunta *pmat+1=30+1 es %d\n\n", i);//31
  24.  
  25.    i=*(pmat+1);//<=== pmat "apunta" a la direccion de mat[2]
  26.    printf("el valor de aquello a lo que apunta *(pmat+1)=mat[2] es %d\n\n", i);//50
  27.  
  28.    i=*++pmat;//<=== pmat "apunta" a la direccion de mat[2];
  29.    printf("el valor de aquello a lo que apunta *++pmat=mat[2] es %d\n\n", i);//50
  30.  
  31.    i=*++pmat;//<=== pmat "apunta" a la direccion de mat[3]
  32.    printf("el valor de aquello a lo que apunta *++pmat=mat[3] es %d\n\n", i);//60
  33.  
  34.    i=*pmat+5;//<=== pmat "apunta" a la direccion de mat[3]+5
  35.    printf("el valor de aquello a lo que apunta *pmat+5=mat[3]+5 es %d\n\n", i);//65
  36.  
  37.    return 0;
  38. }
  39.  
Saludos!
« Última modificación: 3 Octubre 2012, 00:56 am por leosansan » En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #14 en: 3 Octubre 2012, 07:05 am »

Lo de paso por valor es de lo ultimo que he visto, ahora estoy con la recursividad, y ya he visto que el valor de variable solo cambia en la propia funcion, fuera no, lo de los punteros y esas cosas vienen explicadas mas adelante, asi que las vere cuando toque, muchas gracias a todos.

Saludos
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #15 en: 3 Octubre 2012, 11:53 am »

lo de los punteros y esas cosas vienen explicadas mas adelante, asi que las vere cuando toque
Aunque te toque más adelante procura guardar los ejemplos que te postee, son clarificadores e incluyen aritmética de punteros. Por cierto, ¿Qué libro estas siguiendo para el estudio del C?.
Gracias y un saludo.
« Última modificación: 3 Octubre 2012, 12:08 pm por Eternal Idol 7D » En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


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

es así para cambiar el valor de una variable puesta en el argumento.
Código
  1. tipo name(tipo &);
  2.  

En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
« Respuesta #17 en: 3 Octubre 2012, 15:51 pm »

es así para cambiar el valor de una variable puesta en el argumento.
Código
  1. tipo name(tipo &);
  2.  



Estan hablando de C, no de C++.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Caster


Desconectado Desconectado

Mensajes: 786


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

Pues el libro es Programacion en C de Byron Gottfried de la edicion Mc Graw Hill.

overfl0w13, por si lees esto, lo del alcance de las variables, varibles locales, globales, estaticas y eso que creo que es de lo que hablas es justo el tema siguiente en mi libro al de las funciones que estoy viendo ahora.

Saludos
« Última modificación: 3 Octubre 2012, 18:43 pm por Caster » En línea

overxfl0w13

Desconectado Desconectado

Mensajes: 163



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

Pues el libro es Programacion en C de Byron Gottfried de la edicion Mc Graw Hill.

overfl0w13, por si lees esto, lo del alcance de las variables, varibles locales, globales, estaticas y eso que creo que es de lo que hablas es justo el tema siguiente en mi libro al de las funciones que estoy viendo ahora.

Saludos

Pues píllalo con ganas la cosa se pone interesante :)
En línea

[/url]
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