1AM2 T5 HIDALGO
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
INGENIERIA EN CONTROL Y AUTOMATIZACION
FUNDAMENTOS DE PROGRAMACION
TAREA 5 : Apuntadores
fecha actual: viernes 26 de junio del 2015
fecha de entrega : viernes 26 de junio del 2015
ALUMNO: BENITO CAMELO RICO
GRUPO: 1AM2
Índice
Objetivo…………………2
Introducción……………3
Resumen………………..5Procedimiento………….6
Conclusiones ………....12
Bibliografía……………. 12
Objetivo
El alumno será capaz de crear programas utilizando apuntadores .
INTRODUCCIÓN
Apuntador
Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable que contiene el dato.
Cada variable que se utiliza en una aplicación ocupa una o variasposiciones de memoria. Estas posiciones de memoria se accesan por medio de una dirección.
Los punteros tienen muchas utilidades; por ejemplo, nos permiten pasar argumentos (o parámetros) a una función y modificarlos.
También permiten el manejo de cadenas y de arrays.
Otro uso importante es que nos permiten acceder directamente a la pantalla, al teclado y a todos los componentes del ordenador.
ElOperador de Dirección ( &) regresa la dirección de una variable.
El Operador de Indirección ( * ), toma la dirección de una variable y regresa el dato que contiene esa dirección.
La declaración de un puntero de manera general es:
Tipo_dato *nombre de apuntador;
Tipo_dato : Especifica el tipo de objeto apuntado y puede ser cualquier tipo (int, float, char, etc).
Nombre de apuntador: Es elidentificador (nombre asignado) del apuntador.
Ejemplo:
int *a=NULL;
int b=2,c=1;
a=&b; //Guarda la direccion de b en a
c=*a; //c vale 2
Asignación de memoria a valores numéricos
Si se requiere reservar memoria para un tipo de dato que no es char se realiza de la siguiente manera:
tamaño = (número de elementos) * (tamaño del tipo)
El tamaño del tipo se obtiene con la función sizeof.
Ejemplos://Reserva de memoria para 35 enteros
int *apun;
apun = (int *) malloc (sizeof(int));
//Reserva de memoria para 50 flotantes
float *apun;
apun = (float *) malloc (sizeof(float));
Apuntadores y vectores
Las versiones con apuntadores en los arreglos son más rápidas que la forma común.
La declaración int a[10]; int *pa;
por lo que pa=&a[0] y así seestablece que *pa=a[0] y *(pa+1)=a[1] y así sucesivamente. De esta manera se pude manejar mas eficientemente los valores y direcciones de un arreglo Bi o Unidimensional.
a[n] equivale exactamente a *(a+n). Por eso empiezan los arreglos con el indice 0.
Apuntadores y Matrices
Considerar:
int a[10][10];
int *b[10];
El uso de a y b puede ser parecido, desde el momento en que a[5][5] y b[5][5] sonreferencias validas a un int.
El arreglo a es un arreglo verdadero, existen 100 celdas de memoria asignadas y se efectúa el cálculo de subíndices rectangulares convencional para localizar un elemento dado.
Sin embargo a b la declaración solo le asigna 10 apuntadores, cada uno de los cuales deberá de apuntar a un arreglo de enteros
Diferentes declaraciones
La matriz a puede declararse :
Como unarreglo de 10 arreglos de tamaño 20
int a[10][20];
Como un arreglo de tamaño 20 de vectores de longitud variable
int *a[10];
Como un apuntador de apuntadores a enteros
int **a;
Como un apuntador a un arreglo de enteros de tamaño20
int (* a)[20];
Apuntadores y cadenas
Sea la declaración:
char * mensaje[4] = {''Hola'',''Adios'',''Bye'',''Saludos''} ;
Cada cadena está almacenada en memoria como unacadena de caracteres terminada en NULL (\0).
En el arreglo no están colocadas las cadenas, tan solo están almacenados los apuntadores.
Aunque el arreglo es de tamaño fijo, permite el acceso a cadenas de caracteres de cualquier longitud ( por ejemplo la longitud de Bye es mas corta que la de saludos).
Ventajas y desventajas
Beneficios:
Generar elementos bajo demanda, i.e. asignación dinámica de...
Regístrate para leer el documento completo.