SlideShare una empresa de Scribd logo
1 de 17
ADMINISTRACIÓN
DE MEMORIA Y
APUNTADORES

ESTRUCTURAS DE DATOS
José F. Chávez R.
Memoria Estática
•   Suele estar alojada en el stack o pila es una zona
    bastante limitada.
•   Se utiliza para declarar variables de un tamaño que no
    podemos modificar en la ejecución del programa.
•   Procesa los datos más rápidos.
•   En la memoria estática el tamaño de las variables se
    conoce en tiempo de compilación, esta información
    está incluida en el código objeto generado, por lo cual
    el proceso es muy eficiente.
Memoria Dinámica
 La memoria dinámica esta alojada en el   heap o
  almacenamiento libre.
 Se utiliza cuando el programador desconoce el número
  de datos o elementos a tratar.
 Su tamaño puede variar durante la ejecución del
  programa.
 Es muy lento a comparación con la m. estática, ya que
  en el tiempo de ejecución es cuando determina la
  memoria a usar.
 Es más difícil de utilizar.
Tipos de funciones de la memoria
dinámica
 Malloc
 Calloc
 Realloc
 Free
Malloc
 Reserva un bloque de memoria y devuelve     un
  puntero void al inicio de la misma.
 Tiene la siguiente definición: void *malloc(size_t
  size);
 Donde el parámetro size especifica el número de
  bytes a reservar.
Calloc

 Funciona de modo similar a malloc, pero además de
  reservar memoria, inicializa a 0 la memoria reservada. Se
  usa comúnmente para arreglos y matrices.
 Está definida de esta forma: void *calloc(size_t
  nmemb, size_t size);
 El parámetro nmemb indica el número de elementos a
  reservar, y size el tamaño de cada elemento.
Realloc
   Redimensiona el espacio asignado de forma dinámica
    anteriormente a un puntero.

   Tiene la siguiente definición: void *realloc(void *ptr, size_t size);

   Donde ptr es el puntero a redimensionar, y size el nuevo
    tamaño, en bytes, que tendrá. Si el puntero que se le pasa tiene
    el valor nulo, esta función actúa como malloc. Si la reasignación
    no se pudo hacer con éxito, devuelve un puntero nulo, dejando
    intacto el puntero que se pasa por parámetro. Al usar realloc, se
    debería usar un puntero temporal. De lo contrario, podríamos
    tener una fuga de memoria, si es que ocurriera un error en
    realloc.
Free
 Sirve para liberar memoria que se asignó
  dinámicamente.

 Si el puntero es nulo, free   no hace nada.

 Tiene la siguiente definición: void   free(void *ptr);
Tipos De Duración
 Estática: las variables globales y las variables locales
  declaradas con el especificador “static” tienen duración
  estática. Se crean antes de que el programa inicie su
  ejecución y se destruyen cuando el programa termina.

 Automática: Se crean al entrar al bloque en el que fueron
  declaradas y se destruyen al salir de ese bloque.

 Asignada o Dinámica: Esta memoria se crea y se debe
  liberar de forma explícita.
Apuntadores
 Un apuntador es una variable que contiene       la dirección de
  memoria de otra variable. Se pueden tener apuntadores a
  cualquier tipo de variable. Es importante mencionar que
  sin el uso de los apuntadores en arreglos, estructuras y
  funciones se dificultaría el trabajo a realizar, ya que el
  mismo le ofrece flexibilidad y potencia.
Ventajas y Desventajas

 Es la única forma de expresar algunos cálculos.


 Se genera código compacto y eficiente.


 Es una herramienta muy poderosa.


 Cuando se emplean sin cuidado pueden crear
  programas imposibles de entender.
Operadores de los Apuntadores
   Unario o Monádico “&” devuelve la dirección de memoria de una variable.
         main( )
         {
            int y;
            int *yPtr;
            y = 5;
            yPtr = &y;
           }

   Indirección o Desreferencia “*” devuelve el contenido de un objeto apuntado por un
    apuntador.
          main()
          {
             int x,y;
             int *py;
            y = 5;
            *py = y;
             x = *py + 5;
             printf(''%d %d nn'',*py,x);
           }
Declarar un Apuntador
   Al declarar una variable, el compilador reserva un espacio de
    memoria para ella y asocia el nombre de esta a la dirección de
    memoria.
   Los apuntadores deben ser declarados como cualquier otra
    variable antes de la ejecución.

   Para declarar el apuntador se especifica el tipo de dato que se
    apunta, el operador *, y el nombre del apuntador.

   < Tipo de dato apuntado> * <identificador del apuntador>

   Se asocia un apuntador a un tipo de dato, es por que se debe
    conocer en cuantos bytes esta guardado el dato.
Referenciar un Apuntador
 La referenciación es la obtención de la dirección
  de una variable. En C y C++ esto se hace a través
  del operador ‘&’, aplicado a la variable a la cual se
  desea saber su dirección. Nótese que se trata de
  un operador unario.
Apuntadores y Arreglos
   El nombre de un arreglo es un índice a la dirección de comienzo
    del arreglo. En esencia, el nombre de un arreglo es un puntero al
    arreglo.
   Una variable de tipo arreglo puede considerarse como un
    apuntadora tipo del arreglo.
   Los apuntadores pueden ser utilizados en cualquier operación que
    involucre subíndices de arreglos.
   Cuando se suma 1 a un apuntador el incremento se adecua al
    tamaño en memoria del objeto apuntado.
   Un apuntador es una variable, por lo que operaciones como pa = a
    y pa++ son permitidas.
   Un nombre de un arreglo es una constante, no una variable, de
    ahí que a = pa o a++ o p = a.
Fallos comunes en funciones
   No asignar un apuntador a una dirección de memoria antes de usarlo:
int *x
*x = 100;
Lo adecuado será, tener primeramente una localidad física de
memoria, digamos int y;
int *x, y;
x = &y;
*x = 100;
 Indirección no válida:
Supongamos que se tiene una función llamada malloc() la cual trata de
asignar memoria dinámicamente (en tiempo de ejecución), la cual regresa
un apuntador al bloque de memoria requerida si se pudo o un apuntador
a nulo en otro caso.
GRACIAS!!

Más contenido relacionado

La actualidad más candente

Object Oriented Database Management System
Object Oriented Database Management SystemObject Oriented Database Management System
Object Oriented Database Management SystemAjay Jha
 
Introducción a los modelos de datos
Introducción a los modelos de datosIntroducción a los modelos de datos
Introducción a los modelos de datosGalo Anzules
 
Variables & Data Types in R
Variables & Data Types in RVariables & Data Types in R
Variables & Data Types in RRsquared Academy
 
Linked stacks and queues
Linked stacks and queuesLinked stacks and queues
Linked stacks and queuesRamzi Alqrainy
 
Programacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaProgramacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaJosé Antonio Sandoval Acosta
 
Union In language C
Union In language CUnion In language C
Union In language CRavi Singh
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Binary Search Tree
Binary Search TreeBinary Search Tree
Binary Search Treesagar yadav
 
Query processing-and-optimization
Query processing-and-optimizationQuery processing-and-optimization
Query processing-and-optimizationWBUTTUTORIALS
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directaTiFoN87
 
Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objetoboncastell
 
1.7. técnicas de agrupación
1.7.  técnicas de agrupación1.7.  técnicas de agrupación
1.7. técnicas de agrupaciónITCM
 
Priority Queue in Data Structure
Priority Queue in Data StructurePriority Queue in Data Structure
Priority Queue in Data StructureMeghaj Mallick
 
Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosJosé Antonio Sandoval Acosta
 

La actualidad más candente (20)

Object Oriented Database Management System
Object Oriented Database Management SystemObject Oriented Database Management System
Object Oriented Database Management System
 
Introducción a los modelos de datos
Introducción a los modelos de datosIntroducción a los modelos de datos
Introducción a los modelos de datos
 
Binary search tree(bst)
Binary search tree(bst)Binary search tree(bst)
Binary search tree(bst)
 
Arquitectura x86_ Registros
Arquitectura x86_ RegistrosArquitectura x86_ Registros
Arquitectura x86_ Registros
 
Variables & Data Types in R
Variables & Data Types in RVariables & Data Types in R
Variables & Data Types in R
 
Linked stacks and queues
Linked stacks and queuesLinked stacks and queues
Linked stacks and queues
 
Programacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herenciaProgramacion orientada a objetos - unidad 3 herencia
Programacion orientada a objetos - unidad 3 herencia
 
Database Intergrity
Database IntergrityDatabase Intergrity
Database Intergrity
 
Union In language C
Union In language CUnion In language C
Union In language C
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Programación 3: colecciones Java
Programación 3: colecciones JavaProgramación 3: colecciones Java
Programación 3: colecciones Java
 
Binary Search Tree
Binary Search TreeBinary Search Tree
Binary Search Tree
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Query processing-and-optimization
Query processing-and-optimizationQuery processing-and-optimization
Query processing-and-optimization
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directa
 
Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objeto
 
1.7. técnicas de agrupación
1.7.  técnicas de agrupación1.7.  técnicas de agrupación
1.7. técnicas de agrupación
 
Priority Queue in Data Structure
Priority Queue in Data StructurePriority Queue in Data Structure
Priority Queue in Data Structure
 
Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivos
 

Destacado

informatica
informaticainformatica
informaticaMURBANO
 
Programasaludocupacional
ProgramasaludocupacionalProgramasaludocupacional
Programasaludocupacionaljagulop83
 
Universidad Nacional Autónoma de México
Universidad Nacional Autónoma de MéxicoUniversidad Nacional Autónoma de México
Universidad Nacional Autónoma de MéxicoBeatriz Guerra
 
Herramientas web 2.0
Herramientas web 2.0Herramientas web 2.0
Herramientas web 2.0Uceva
 
Dolphin Point
Dolphin Point Dolphin Point
Dolphin Point luicai
 
Terminacion taller de informatica #5
Terminacion  taller  de informatica #5Terminacion  taller  de informatica #5
Terminacion taller de informatica #5jhonandersoncortes
 
Pc zombies, scam, spim,
Pc zombies, scam, spim,Pc zombies, scam, spim,
Pc zombies, scam, spim,lizbethia
 
AULA VIRTUAL Y CORREO INSTITUCIONAL
AULA VIRTUAL  Y CORREO INSTITUCIONALAULA VIRTUAL  Y CORREO INSTITUCIONAL
AULA VIRTUAL Y CORREO INSTITUCIONALj21gabriel
 
Medios de pago
Medios de pagoMedios de pago
Medios de pagolizbethia
 
Resumen Carpeta Sin Imagenes
Resumen Carpeta Sin ImagenesResumen Carpeta Sin Imagenes
Resumen Carpeta Sin ImagenesFundacion Angela
 
BASE DE DATOS DISTRIBUIDA
BASE DE DATOS DISTRIBUIDABASE DE DATOS DISTRIBUIDA
BASE DE DATOS DISTRIBUIDAIrene Lorza
 
Aire agua fuego y tierra
Aire agua fuego y tierraAire agua fuego y tierra
Aire agua fuego y tierraElsa Aguilar
 
Portafolio final de comercio exterior daniela hernandez
Portafolio final  de comercio exterior daniela hernandezPortafolio final  de comercio exterior daniela hernandez
Portafolio final de comercio exterior daniela hernandezdaniela-hernandez
 

Destacado (20)

Politica
PoliticaPolitica
Politica
 
Fundaciones de la economia
Fundaciones  de la  economiaFundaciones  de la  economia
Fundaciones de la economia
 
la comunicacion
la comunicacion la comunicacion
la comunicacion
 
informatica
informaticainformatica
informatica
 
Programasaludocupacional
ProgramasaludocupacionalProgramasaludocupacional
Programasaludocupacional
 
Universidad Nacional Autónoma de México
Universidad Nacional Autónoma de MéxicoUniversidad Nacional Autónoma de México
Universidad Nacional Autónoma de México
 
Herramientas web 2.0
Herramientas web 2.0Herramientas web 2.0
Herramientas web 2.0
 
Dolphin Point
Dolphin Point Dolphin Point
Dolphin Point
 
Diversidad del peru
Diversidad del peruDiversidad del peru
Diversidad del peru
 
Trabajo en word (1)
Trabajo en word (1)Trabajo en word (1)
Trabajo en word (1)
 
Terminacion taller de informatica #5
Terminacion  taller  de informatica #5Terminacion  taller  de informatica #5
Terminacion taller de informatica #5
 
Pc zombies, scam, spim,
Pc zombies, scam, spim,Pc zombies, scam, spim,
Pc zombies, scam, spim,
 
La Planta
La PlantaLa Planta
La Planta
 
AULA VIRTUAL Y CORREO INSTITUCIONAL
AULA VIRTUAL  Y CORREO INSTITUCIONALAULA VIRTUAL  Y CORREO INSTITUCIONAL
AULA VIRTUAL Y CORREO INSTITUCIONAL
 
Medios de pago
Medios de pagoMedios de pago
Medios de pago
 
Resumen Carpeta Sin Imagenes
Resumen Carpeta Sin ImagenesResumen Carpeta Sin Imagenes
Resumen Carpeta Sin Imagenes
 
BASE DE DATOS DISTRIBUIDA
BASE DE DATOS DISTRIBUIDABASE DE DATOS DISTRIBUIDA
BASE DE DATOS DISTRIBUIDA
 
WEB 2.0
WEB 2.0WEB 2.0
WEB 2.0
 
Aire agua fuego y tierra
Aire agua fuego y tierraAire agua fuego y tierra
Aire agua fuego y tierra
 
Portafolio final de comercio exterior daniela hernandez
Portafolio final  de comercio exterior daniela hernandezPortafolio final  de comercio exterior daniela hernandez
Portafolio final de comercio exterior daniela hernandez
 

Similar a Administración de memoria y apuntadores

Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punterosKareliaRivas
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1joeshego
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)MarielaCuriel
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Jennybeatriz1
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaJhosse Ant Siilva
 
1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptx1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptxFernando Solis
 
Definición de punteros en C++ en Introducción a la Programación
Definición de punteros en C++ en Introducción a la ProgramaciónDefinición de punteros en C++ en Introducción a la Programación
Definición de punteros en C++ en Introducción a la ProgramaciónFacultad de Ciencias y Sistemas
 
Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Tensor
 
TUTORIAL LENGUAJE C
TUTORIAL LENGUAJE CTUTORIAL LENGUAJE C
TUTORIAL LENGUAJE CJesus Agreda
 
TUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE CTUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE CJesus Agreda
 

Similar a Administración de memoria y apuntadores (20)

Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punteros
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silva
 
1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptx1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptx
 
Definición de punteros en C++ en Introducción a la Programación
Definición de punteros en C++ en Introducción a la ProgramaciónDefinición de punteros en C++ en Introducción a la Programación
Definición de punteros en C++ en Introducción a la Programación
 
Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++
 
Introducción
IntroducciónIntroducción
Introducción
 
Introducción
IntroducciónIntroducción
Introducción
 
TUTORIAL LENGUAJE C
TUTORIAL LENGUAJE CTUTORIAL LENGUAJE C
TUTORIAL LENGUAJE C
 
TUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE CTUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE C
 
Modelo Dinamico
Modelo DinamicoModelo Dinamico
Modelo Dinamico
 

Administración de memoria y apuntadores

  • 2. Memoria Estática • Suele estar alojada en el stack o pila es una zona bastante limitada. • Se utiliza para declarar variables de un tamaño que no podemos modificar en la ejecución del programa. • Procesa los datos más rápidos. • En la memoria estática el tamaño de las variables se conoce en tiempo de compilación, esta información está incluida en el código objeto generado, por lo cual el proceso es muy eficiente.
  • 3. Memoria Dinámica  La memoria dinámica esta alojada en el heap o almacenamiento libre.  Se utiliza cuando el programador desconoce el número de datos o elementos a tratar.  Su tamaño puede variar durante la ejecución del programa.  Es muy lento a comparación con la m. estática, ya que en el tiempo de ejecución es cuando determina la memoria a usar.  Es más difícil de utilizar.
  • 4. Tipos de funciones de la memoria dinámica  Malloc  Calloc  Realloc  Free
  • 5. Malloc  Reserva un bloque de memoria y devuelve un puntero void al inicio de la misma.  Tiene la siguiente definición: void *malloc(size_t size);  Donde el parámetro size especifica el número de bytes a reservar.
  • 6. Calloc  Funciona de modo similar a malloc, pero además de reservar memoria, inicializa a 0 la memoria reservada. Se usa comúnmente para arreglos y matrices.  Está definida de esta forma: void *calloc(size_t nmemb, size_t size);  El parámetro nmemb indica el número de elementos a reservar, y size el tamaño de cada elemento.
  • 7. Realloc  Redimensiona el espacio asignado de forma dinámica anteriormente a un puntero.  Tiene la siguiente definición: void *realloc(void *ptr, size_t size);  Donde ptr es el puntero a redimensionar, y size el nuevo tamaño, en bytes, que tendrá. Si el puntero que se le pasa tiene el valor nulo, esta función actúa como malloc. Si la reasignación no se pudo hacer con éxito, devuelve un puntero nulo, dejando intacto el puntero que se pasa por parámetro. Al usar realloc, se debería usar un puntero temporal. De lo contrario, podríamos tener una fuga de memoria, si es que ocurriera un error en realloc.
  • 8. Free  Sirve para liberar memoria que se asignó dinámicamente.  Si el puntero es nulo, free no hace nada.  Tiene la siguiente definición: void free(void *ptr);
  • 9. Tipos De Duración  Estática: las variables globales y las variables locales declaradas con el especificador “static” tienen duración estática. Se crean antes de que el programa inicie su ejecución y se destruyen cuando el programa termina.  Automática: Se crean al entrar al bloque en el que fueron declaradas y se destruyen al salir de ese bloque.  Asignada o Dinámica: Esta memoria se crea y se debe liberar de forma explícita.
  • 10. Apuntadores  Un apuntador es una variable que contiene la dirección de memoria de otra variable. Se pueden tener apuntadores a cualquier tipo de variable. Es importante mencionar que sin el uso de los apuntadores en arreglos, estructuras y funciones se dificultaría el trabajo a realizar, ya que el mismo le ofrece flexibilidad y potencia.
  • 11. Ventajas y Desventajas  Es la única forma de expresar algunos cálculos.  Se genera código compacto y eficiente.  Es una herramienta muy poderosa.  Cuando se emplean sin cuidado pueden crear programas imposibles de entender.
  • 12. Operadores de los Apuntadores  Unario o Monádico “&” devuelve la dirección de memoria de una variable. main( ) { int y; int *yPtr; y = 5; yPtr = &y; }  Indirección o Desreferencia “*” devuelve el contenido de un objeto apuntado por un apuntador. main() { int x,y; int *py; y = 5; *py = y; x = *py + 5; printf(''%d %d nn'',*py,x); }
  • 13. Declarar un Apuntador  Al declarar una variable, el compilador reserva un espacio de memoria para ella y asocia el nombre de esta a la dirección de memoria.  Los apuntadores deben ser declarados como cualquier otra variable antes de la ejecución.  Para declarar el apuntador se especifica el tipo de dato que se apunta, el operador *, y el nombre del apuntador.  < Tipo de dato apuntado> * <identificador del apuntador>  Se asocia un apuntador a un tipo de dato, es por que se debe conocer en cuantos bytes esta guardado el dato.
  • 14. Referenciar un Apuntador  La referenciación es la obtención de la dirección de una variable. En C y C++ esto se hace a través del operador ‘&’, aplicado a la variable a la cual se desea saber su dirección. Nótese que se trata de un operador unario.
  • 15. Apuntadores y Arreglos  El nombre de un arreglo es un índice a la dirección de comienzo del arreglo. En esencia, el nombre de un arreglo es un puntero al arreglo.  Una variable de tipo arreglo puede considerarse como un apuntadora tipo del arreglo.  Los apuntadores pueden ser utilizados en cualquier operación que involucre subíndices de arreglos.  Cuando se suma 1 a un apuntador el incremento se adecua al tamaño en memoria del objeto apuntado.  Un apuntador es una variable, por lo que operaciones como pa = a y pa++ son permitidas.  Un nombre de un arreglo es una constante, no una variable, de ahí que a = pa o a++ o p = a.
  • 16. Fallos comunes en funciones  No asignar un apuntador a una dirección de memoria antes de usarlo: int *x *x = 100; Lo adecuado será, tener primeramente una localidad física de memoria, digamos int y; int *x, y; x = &y; *x = 100;  Indirección no válida: Supongamos que se tiene una función llamada malloc() la cual trata de asignar memoria dinámicamente (en tiempo de ejecución), la cual regresa un apuntador al bloque de memoria requerida si se pudo o un apuntador a nulo en otro caso.