Punteros y asignación dinámica de memoria

Páginas: 21 (5030 palabras) Publicado: 7 de mayo de 2011
2010
UNAN LEON Departamento de Computación Autor: Ing. Juan Carlos Antón Soto Asignatura: Programación Estructurada

PUNTEROS Y ASIGNACION DINAMICA DE MEMORIA

PUNTEROS Y ASIGNACION DINAMICA DE MEMORIA

TEMA 7: PUNTEROS Y ASIGNACION DINAMICA DE MEMORIA Un puntero es una variable que representa la dirección de memoria de otro dato, tal como una variable o un elemento de un array. Lospunteros están muy relacionados con los arrays y proporcionan una alternativa de acceso a los elementos individuales del array. Proporcionan una forma conveniente para representar arrays multidimensionales, permitiendo que un array multidimensional sea reemplazado por un array de punteros de menor dimensión. Esta característica permite que una colección de cadenas de caracteres sea representada con unsolo array, incluso cuando las cadenas pueden tener distintas longitudes. Un puntero puede apuntar a un objeto de cualquier tipo, incluyendo estructuras, funciones, etc. Los punteros se pueden utilizar para crear y manipular estructuras de datos, para asignar memoria dinámicamente y para proveer el paso de argumentos por referencia en las llamadas a funciones. CREACION DE PUNTEROS Un puntero sedeclara precediendo el identificador que referencia al puntero, por el operador de indirección (*), el cual significa puntero a . Un puntero siempre apunta a un tipo particular. Un puntero no inicializado tiene un valor desconocido. tipo *identificador; tipo Tipo de dato del objeto referenciado por el puntero. identificador Identificador de la variable de tipo puntero.
Ejemplo: int *pa; //declarauna variable puntero a un tipo de dato entero

Cuando se declara un puntero se reserva memoria para albergar una dirección de memoria, pero NO PARA ALMACENAR EL DATO AL QUE APUNTA EL PUNTERO.

1

PUNTEROS Y ASIGNACION DINAMICA DE MEMORIA

El espacio de memoria reservado para almacenar un puntero es el mismo independientemente del tipo de dato al que apunte.

OPERADORES Al hablar depunteros, se distinguen dos operadores: Operador dirección de : & Operador de indirección : * El operador &, devuelve como resultado la dirección de su operando. El operador *, toma su operando como una dirección y nos da como resultado su contenido.
OPERACIONES CON PUNTEROS

Operación de asignación = A un puntero se le puede asignar una dirección de memoria concreta, la dirección de una variable oel contenido de otro puntero. Una dirección de memoria concreta:
int *ptr; ... ptr = 0x1F3CE00A; ...

La dirección de una variable del tipo al que apunta el puntero:
char c; char *ptr; ... ptr = &c;

2

PUNTEROS Y ASIGNACION DINAMICA DE MEMORIA

Otro puntero del mismo tipo:
char c; char *ptr1; char *ptr2; ptr1 = &c; ptr2 = ptr1;

El código siguiente explica el comportamiento de lospunteros en memoria:

Suponer que la variable y está en la localidad de la memoria 1001, z en 1002, nptr en 1003, y mptr en 1007, las variables y y z son declaradas de tipo entero e inicializadas a 5 y 3 respectivamente, nptr y mptr son declarados como punteros a enteros.

A nptr se le asigna la dirección de y por lo que nptr se carga con la dirección 1001 como se muestra en la figura.

zobtiene el contenido de nptr. En el ejemplo nptr apunta a la localidad de memoria 1001 (localidad de y). Por lo tanto, z obtiene el valor de y.

3

PUNTEROS Y ASIGNACION DINAMICA DE MEMORIA

Se asigna el valor entero 7 al contenido del puntero nptr, por lo cual se hace una copia en la variable y, ya que éste puntero contiene la dirección de memoria de y.

La dirección del puntero nptr esasignada a mptr, por lo que éste puntero tendrá la misma dirección que tiene y, esto es igual a la siguiente instrucción mptr = &y. Ejemplo de uso de punteros
#include void main() { int x = 1, y = 2, z[10]; int *ip; /* ip es un puntero a entero */ printf("\n\n\t PRUEBA DE PUNTEROS.\n"); printf("\nValores iniciales: x=%d, y=%d\n", x, y); printf("\ndireccion de memoria inicial en el puntero...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • memoria dinamica y punteros
  • Memoria dinámica y punteros
  • Invetigacion Punteros Y Memoria Dinamica
  • Asignación Dinámica De Memoria
  • asignacion dinamica
  • Asignacion Memoria
  • Punteros y Direccion De Memoria
  • Memoria Dinamica

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS