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

Duda con los conceptos de Declaracion, Definicion e Inicializacion

Estas en el tema de Duda con los conceptos de Declaracion, Definicion e Inicializacion en el foro de C/C++ en Foros del Web. Hola, como veran el tema es super sencillo, pero lo que no entiendo es la diferencia entre la Definicion e Inicializacion, por ejemplo, se que ...
  #1 (permalink)  
Antiguo 30/03/2014, 13:17
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 6 meses
Puntos: 3
Pregunta Duda con los conceptos de Declaracion, Definicion e Inicializacion

Hola, como veran el tema es super sencillo, pero lo que no entiendo es la diferencia entre la Definicion e Inicializacion, por ejemplo, se que la Declaracion es decir, por ejemplo:

Código C:
Ver original
  1. int x;

Es decir donde defino un identificador y establezco su tipo de dato, pero el significado de la Definicion que encontre por alli dice: " Definicion: Asocia un identificador con un tipo y le asigna espacio en memoria", lo que para mi es la Inicializacion, entonces, ¿Cual es la diferencia entre la Definicion de una variable y su Inicializacion?.

Saludos y gracias.

EDITO: Ya encontre una pagina que explica muy bien todo, asi que aqui dejo la respuesta por si alguien tiene la misma duda:

Declaración: Simplemente asocia un identificador con un tipo (existencia semántica). La declaración de una función se denomina prototipo ( 4.4.1). La gramática C++ exige que la declaración de una entidad se indique primero su tipo y después el identificador con el que se la conocerá en adelante.

Ejemplos:

Código C:
Ver original
  1. extern int x;

Iniciación: Asigna memoria física al objeto (existencia física). Si no se produce una inmediata asignación de valores determinados, la zona asignada puede contener basura.

Ejemplo:

Código C++:
Ver original
  1. int x;

Definición: Asocia un identificador con un tipo y le asigna espacio en memoria (declaración + iniciación). Observe que después de la definición, el objeto no tiene porqué estar inicializado. Es decir, si es un objeto-dato, el espacio asignado puede contener basura.

Ejemplo:

Código C:
Ver original
  1. int func(int x, char c) {
  2.   return (x + c)
  3. }

Inicialización: Asignar valores concretos al objeto (existencia utilizable); a partir de aquí, el espacio de memoria contiene datos correctos.

Ejemplo:

Código C:
Ver original
  1. x = 5;              // inicia x con el valor 5

Última edición por ElPatoGarrido; 30/03/2014 a las 13:30
  #2 (permalink)  
Antiguo 30/03/2014, 13:52
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Duda con los conceptos de Declaracion, Definicion e Inicializacion

Definición es el proceso de especificar el tipo de memoria y nombrarla.También se reserva el espacio en ese proceso de igual que le inicializes o no.
Y Inicializar es cuando le dices que valos va a guardar.
Si no inicializa una variable esa puede conter residuos de otros programas.
Puedes crear una variable y imprimirla, puede que te salga cualquier cosa, un numero una letra, pero ni siquiera sabes que tipo es ni que programa lo dejo ahí.
Por eso buena practica es crear la variable y inicializarla con cero.
int numero = 0;
Si hacemos lo anterior sabemos que hay un cero en esa variable, de otra forma es una variable salvaje XDD que puede tener cualquier cosa y causar problemas según como la utilices.

Definir:
<tipo> <identificador>
int minumero;

Inicializar:
<identificador> = <valor>;
minumero = 100; // eso si la habiamos creado antes sino seria int minumero = 100;

le puedes asignar otra variable como valor:

int numero1 = 100
int numero2 = 0;

numero2 = numero1;

ahora numero 2 es igual a numero1 por que asignamos el mismo valor que tiene numero1 a numero2.
Se dice:
A numero2 le asignamos el valor de numero1.

Cuando declaras ya le estas reservando lugar para ella en la memoria.
Esa variable solo dejara de existir cuando termine dicha función.
Como main es una función pues cuando termine el programa se libera la memoria, ahí es cuando estará libre para otro programa y puede que contenga residuos de nuestro programa :D

Última edición por vangodp; 30/03/2014 a las 14:01

Etiquetas: declaracion, int
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 07:30.