Professional Documents
Culture Documents
NULL, o a una direccin. Un apuntador con valor NULL apunta a nada. NULL es una constante simblica definida en stdio.h
Operadores de apuntador
El &, u operador de direccin, es un operador unario que regresa la direccin de su operando. Ejem:
int y = 5; int *apuntador_y: apuntador_y = &y; // asigna la direccin de la //variable y a la variable de //apuntador apuntador_y La variable apuntador_y apunta a y
Operadores de apuntador
El operando del operador de direccin ( &
) debe ser una variable; no puede aplicarse a constantes, expresiones, o variables declaradas con la clase de almacenamiento register.
Operadores de apuntador
El operador *, conocido comnmente
como el operador de indireccin o de desreferencia, regresa el valor del objeto hacia el cual su operando apunta (es decir, un apuntador). Ejem:
Operadores de apuntador
Los operadores & y * son complementarios, cuando se aplican consecutivamente a una variable apuntador, en cualquier orden, el resultado ser el mismo.
Son de tipo unario, se asocia de izquierda a derecha. Fig 7.4
Operadores de apuntador
objeto. Al ejecutar la aritmtica de apuntadores en un arreglo de caracteres, los resultados sern consistentes con la aritmtica normal, porque cada carcter tiene una longitud de un byte.
Incrementan el apuntador, para que apunte a la siguiente posicin dentro del arreglo.
significado, a menos de que se ejecute en un arreglo (no podemos suponer que 2 variables del mismo tipo se almacenen de manera contigua en memoria, a menos que sean elementos adyacente de un arreglo).
cast para convertir el apuntador a la derecha de la asignacin del tipo de apuntador de la izquierda de la asignacin.
//La notacin apuntador/desplazamiento *(apuntB + 3)//hace refencia al elemento b[3] //Los parntesis son necesarios *apuntB + 3; //suma 3 al contenido de b[0]
de la misma forma que los arreglos, mediante la notacin apuntador/subndice: apuntB[1] //se refiere al elemento b[1]
b += 3; //error de sintaxis
Resulta invlida, porque intenta modificar el valor del nombre de un arreglo con aritmtica de apuntador (fig. 7.20, 7.21).
Arreglos de apuntadores
Los arreglos pueden contener apuntadores.
Un uso comn es formar un arreglo de cadenas.
Arreglos de apuntadores
Ejemplo:
Arreglos dinmicos.
Los punteros indican direcciones de memoria.
Para usarlos hay que saber qu tipo de dato hay en
void *
depende
del tipo de dato del compilador de la arquitectura
byte. Ej. la memoria necesaria para guardar 100 floats es: 100 * sizeof( float )
obtener un puntero a los datos que queremos poner en ella usamos un "cast de void al tipo requerido.
calloc reserva espacio para tantos elementos como indica el primer argumento, cada uno del tamao que indica el segundo.
calloc inicializa todos los bytes de la memoria a cero. Si accedemos a la memoria como a un vector de enteros,todos valen cero al principio.
int *x, n; x=(int*)calloc(n, sizeof(int) ); los x[0], x[1], ..., x[n-1] valen cero
float *x, *y; int n; x=(float*)calloc( n, sizeof(float) ); y=(float*)calloc( n, sizeof(float) ); free( y ); free( x );
Shell Sort
Shell sort u ordenamiento por disminucin de incremento. Llamado as en honor a su creador (Donald Shell,1959).
Ordena suarreglos separados del arreglo original. Los cuales contienen todo elemento k-simo del arreglo original. El valor de k se llama incremento.
Shell Sort
Se ordena los primeros k subarreglos
(en general por insercin simple), se elige un nuevo valor menor de k y se vuelve a particionar el arreglo en un nuevo conjunto de subarreglos.
Shell Sort
Cada uno de esos subarreglos ms
Shell Sort
Secuencia (5, 3, 1)
Shell Sort
decrecientes.
numinc: nm. De elementos de incrmnts
Shell Sort
Apuntadores a funciones.
Un apuntador a una funcin contiene la
direccin inicial en memoria del cdigo que ejecuta la tarea de dicha funcin.
Apuntadores a funciones.
Los apuntadores a las funciones pueden ser
pasados a las funciones, regresado de las funciones, almacenados en arreglos, y asignados a otros apuntadores de funcin.
(fig. 7.26)
Apuntadores a funciones.
Un uso comn de los apuntadores de funcin ocurren en los denominados sistemas manejados por men. Cada opcin est servida por una funcin diferente.
En un arreglo de apuntador a funciones se almacenan apuntadores a cada funcin. La
seleccin del usuario se utiliza en el arreglo como un subndice, y el apuntador en el arreglo se utiliza para llamar a la funcin. (fig. 7.28)