Apuntadores y estructuras c++

Solo disponible en BuenasTareas
  • Páginas : 7 (1549 palabras )
  • Descarga(s) : 0
  • Publicado : 15 de agosto de 2012
Leer documento completo
Vista previa del texto
"Apuntadores y Estructuras"
Programación C
Alberto Pacheco
apacheco@itchihuahua.edu.mx
(29/May/2007 11:58am)

Presentación hecha en ExpoVision, Alberto Pacheco, Ver 1.0.55, MEXICO D.R. © 2012
Abstract:
Revisión del tópico más temido y obscuro de Lenguaje C.. los APUNTADORES. Incluye ejemplos y ejercicios.
Keywords:
Lenguaje C, apuntadores, indirección, arreglos, estructuras,memoria dinámica
Contenido
| | | | |
Mapa Conceptual
A b s t r a c t
1. Características de los Apuntadores
4. Apuntadores: Ventajas y Desventajas
5. Apuntadores: Operaciones Básicas
7. Los Datos en Memoria: sizeof()
8. Aritmética de Apuntadores
9. Apuntadores y Cadenas
10. Estructuras
12. Apuntadores y Arreglos de Estructuras
13. Estructuras: Pseudotipos y Parámetros por Refere14. Asignación Dinámica de Memoria
15. Apuntadores y Arreglos
17. Apuntadores a Funciones
18. Ejercicios
* Apuntador: A continuación se resumen sus principales cualidades
Variable que almacena una dirección de memoria.
Una variable de este tipo "apunta" o hace referencia a uno ó más objetos
Desde su declaración "sabe" el tipo de objetos a que hace referencia.
Tipos de apuntadores: atipos primitivos, arreglos, apuntadores, estructuras y funciones, (*p).field == p->field
El identificador de un arreglo equivale a un apuntador a la dirección del primer elemento, a+i == &a[i] y *(a+i) == a[i]

Parámetros por referencia: en vez de una copia del valor de un parámetro, con apuntadores pasas la dirección del objeto y por lo tanto, la función puede alterar el objeto"externo".
Apuntador Universal: (void*) declara un apuntador genérico, apunta a cualquier tipo de objeto.
Operadores permitidos: asignar, sumar con contantes, restar, comparar, convertir y manejo de bits.
Operadores PROHIBIDOS: multiplicar, dividir y sumar dos o más apuntadores.
Apuntador NULO: valor reservado, dirección cero, significa "apuntador vacío", definido en <stdlib.h>, NULL == (void*)0
PELIGRO: Un apuntador puede accesar indirectamente el contenido de un objeto.
PRECAUCION: Todo apuntador debe inicializarse antes de usarse.
* Beneficios:
* Generar elementos bajo demanda, asignación dinámica de memoria
* Manipular y recorrer grandes espacios de memoria
* Generar estructuras de datos complejas
* Parámetros de entrada/salida para funciones, parámetros porreferencia
* Dificultades:
* Programación avanzada, caótica y/o complicada
* Programación más susceptible de errores muy difíciles de depurar
* Dificultad para leer y comprender código

EJERCICIOS

#define NULO ((void *)0)
void main()
{
int i=5, j; // Datos
int *p=NULO, *q=NULO; // Apuntadoresprintf("\ni=%d, p=%p, q=%p", i, p, q);
p = q = &i; // Apuntar al dato
*p = 7; // afectar dato (indirección)
printf("\ni=%d, p=%p, q=%p", i, p, q);
if ( p == q )// Son iguales?
printf("\np es igual a q");
++*p // incrementa dato, lee datoprintf("\ni=%d",i);// i=8
j = *q++;// lee dato, incrementa dirección
printf("\nj=%d, p=%p, q=%p", j, p, q); // j=?
if ( p != q ) // Diferentes?
printf("\np es diferente a q");
if ( q > p ) // Cuál es mayor?
printf("\nq es mayor que p");
}
Op | Función | Ejemplo |Explicación |
(void *) | Convierte entero a dirección | (void *)0 | dirección nula |
* | Para declarar apuntadores | int *p; | p es un apuntador |
& | Obtener dirección de.. | q=&i; | q apunta a i |
= | Asignar dirección | p=q=&i; | p y q apuntan a i |
* | Operador indirección | *p=7; | a donde apunta p almacena un 7 |
++ | Incremento-dato | ++*p; | incrementa el valor que...
tracking img