ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Apuntadores En C


Enviado por   •  24 de Octubre de 2013  •  2.363 Palabras (10 Páginas)  •  563 Visitas

Página 1 de 10

Apuntadores.

Introducción.

En este capítulo, analizamos una de las características más poderosas del lenguaje de programa¬ción en C, el apuntador. Los apuntadores son las capacidades más difíciles de dominar en C. Los apuntadores le permiten a los programas simular llamadas por referencia, crear y manipular estructuras de datos, es decir, estructuras de datos que pueden crecer o encogerse, como son listas enlazadas, colas de espera, pilas y árboles. Este capítulo explica conceptos básicos de los apuntadores. En el capítulo 10 se examina el uso de apuntadores junto con las estructuras.

Declaraciones e inicialización de variables de apuntadores.

Los apuntadores son variables que contienen direcciones de memoria como sus valores. Por lo regular una variable contiene directamente un valor específico. Un apuntador, por otra parte, contiene la dirección de una variable que contiene un valor específico. En este sentido, un nombre de variable se refiere directamente a un valor y un apuntador se refiere indirectamente a un valor.

Los apuntadores deben ser inicializados cuando son declarados o en un enunciado de asignación. Un apuntador puede ser inicializadoa 0, NULL, o aúna dirección. Un apuntador con el valor NULL apunta a nada. NULL es una constante simbólica, definida en el archivo de cabecera <stdio . h> (y en varios otros archivos de cabecera). Inicializar un apuntador a 0 es equivalente a inicializar un apuntador a NULL, pero es preferible NULL. Cuando se asigna 0, primero se convierte a un apuntador del tipo apropiado. El valor 0 es el único valor entero que puede ser directamente asignado a una variable de

Cómo llamar funciones por referencia

Existen dos formas de pasar argumentos a un función llamada por valor y llamada por referencia. En C todas las llamadas de función son llamadas por valor. Como vimos en el capítulo 5, se puede utilizar return para regresar un valor de una función llamada hacia el llamador (o para regresar el control de una función llamada sin regresar un valor). Muchas funciones requieren la capacidad de modificar una o más variables del llamador, o de pasar un apuntador a un objeto de datos grande, para evitar la sobrecarga de pasar el objeto en llamada por valor (lo que, naturalmente,

/* Using the & and * operators */

#include <stdio.h>

main()

{

int a; /* a is an integer */

int *aPtr; /* aPtr is a pointer to an integer */

a = 7;

aPtr = Sea; /* aPtr set to address of a */

printf("The address of a is %p\n"

"The value of aPtr is ^spNnXn", &a, aPtr) ;

printf("The value of a is %d\n"

"The value of *aPtr is %d\n\n", a, *aPtr);

printf("Proving that * and & are complements of " "each other.\n&*aPtr = '%p\n*&aPtr = %p\n", &*aPtr, *&aPtr);

return 0;

}

( ) [ ] de izquierda a derecha oculto

+ + + -- ! * & (type) de izquierda a derecha unario

* / % de izquierda a derecha multiplicativo

+ - de izquierda a derecha aditivo

< <= > > = de izquierda a derecha relación

= = ! = de izquierda a derecha igualdad

&& de izquierda a derecha y lógico

i 1 de izquierda a derecha o lógico

o . de izquierda a derecha condicional

= + = * / = %= de izquierda a derecha asignación

de izquierda a derecha coma

En C, los programadores utilizan apuntadores y el operador de indirección para simular llamadas por referencia. Cuando se llama a una función con argumentos que deban ser modifica¬dos, se pasan las direcciones de los argumentos. Esto se lleva a cabo normalmente aplicando el operador de dirección (&), a la variable cuyo valor deberá ser modificado. Como se vió en el capí¬tulo 6, los arreglos no son pasados mediante el operador & porque C pasa de forma automática la posición inicial en memoria del arreglo (el nombre de un arreglo es equivalente a tarrayNa- me [0]). Cuando se pasa a una función la dirección de una variable, el operador de indirección (*), puede ser utilizado en la función para modificar el valor de esa posición en la memoria del llamador.

Cómo utilizar el calificador Const con apuntadores

El calificador const permite al programador informarle al compilador que el valor de una variable particular no deberá ser modificado. En las primeras versiones de C no existía el calificador const; fue añadido al lenguaje por el comité de ANSI C.

El calificador cone t puede ser utilizado para forzar el principio del mínimo privilegio. La utilización del principio de mínimo privilegio para diseñar con propiedad el software reduce en forma importante el tiempo de depuración y efectos inadecuados colaterales, y hace un programa más fácil de modificar y mantener.

A través de los años, una gran base de código heredado quedó escrita en las primeras versiones de C, que no utilizan a const porque no estaba disponible. Por esta razón, existen grandes oportunidades de mejoría en la ingeniería de software del código existente de C. También, muchos programadores, que en la actualidad utilizan ANSI C, en sus programas no utilizan const, porque empezaron a programar usando las primeras versiones de C. Estos programadores están perdiendo muchas oportunidades de buena ingeniería de software.

Existen seis posibilidades para el uso (o el no uso) de const con parámetros de función,dos —al pasar parámetros en llamadas por valor y cuatro al pasar parámetros con llamadas por referencia. ¿Cómo escogerá usted una de las seis posibilidades? Deje que el principio del mínimo privilegio sea su guía. Siempre dele a una función suficiente acceso a los datos en sus parámetros para llevar a cabo su tarea especificada, pero no más.

Existen cuatro formas para pasar un apuntador a una función: un apuntador no constante a datos no constantes, un apuntador constante a datos no constantes, un apuntador no constante a datos constantes, y un apuntador constante a datos constantes. Cada una de las cuatro combina¬ciones proporciona un nivel distinto de privilegios de acceso.

El nivel más alto de acceso de datos se consigue mediante un apuntador no constante a datos no constantes. En este caso, los datos pueden ser modificados a través de un apuntador desrefe- renciado, y el apuntador puede ser modificado para señalar a otros elementos de datos. Una declaración para un apuntador no constante a datos no constantes no incluye cons t. Tal apuntador pudiera ser utilizado para recibir una cadena como argumento a una función que utiliza aritmética de

...

Descargar como (para miembros actualizados) txt (15 Kb)
Leer 9 páginas más »
Disponible sólo en Clubensayos.com