Variables numéricas C++ PROBLEMA RARO!

Iniciado por JPpapa, 6 Julio 2012, 16:08 PM

0 Miembros y 1 Visitante están viendo este tema.

JPpapa

Hola que tal?
Soy nuevo en esto y estoy aprendiendo C++ pero no puedo avanzar por un problema muy básico y raro porque no lo encontré mucho por google.
Cuando ingreso el valor de una variable el programa se cae... Por ejemplo:

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>

        int numero = 2;
main()
{
    printf ("%d\n", numero);
    printf ("Asigne un nuevo valor\n");
    scanf ("%d", numero);
    getchar();
}


Al declarar el valor al principio no se cae, pero se cae cuando quiero darle un nuevo valor... no sé que puede ser. Tengo Vista (?) uso el Dev C++ pero también probé con Visual C++ y me pasó lo mismo.


Muchas gracias!

DickGumshoe

Hola. Bienvenido al foro.

Antes que nada, decir que no estás aprendiendo C++, sino C.

Después, te sobran librerías. La librería iostream es de C++, por lo que no debes utilizarla (de hecho, solo la incluyes, pero no haces nada con ella).

"stdlib.h" y "conio.h" también puedes borrarlas del programa.

Tu problema está en que en scanf(); pones "numero", y deberías poner "&numero". Así:


#include <stdio.h>

         
int main()
{
     int numero = 2;
     printf ("%d\n", numero);
     printf ("Asigne un nuevo valor\n");
     scanf ("%d", &numero);
     getchar();
     return 0;
}



Saludos.

0xDani

Estaria bien que leyeras la diferencia entre pasar variables por valor y por referencia, para entender lo que estas haciendo y no poner &numero solo porque funciona. A la larga te sera util.

Saludos.
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

JPpapa

muchas gracias, lo pude arreglar. Igual no entiendo por qué hay que poner &. Alguien me explica?


DickGumshoe

Lo entenderás mejor cuando llegues, como ha dicho daniyo, a estudiar el paso por parámetros y por referencia. Para que te vayas haciendo una idea, te explico un poco:

Cuando un parámetro es pasado por valor, es una copia del mismo. Por lo tanto, no se modifica el original.

Como lo que quieres es modificar esa variable, haces el paso de parámetros por referencia, en el que modificas la variable original, y por tanto, se guardan los cambios en la misma.

Para diferenciar una de otras, en el paso por referencia se le pone "&" delante de la variable y en el paso por valor no.

Saludos.