Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2014, 13:17
ElPatoGarrido
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 13 años
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