Vous êtes sur la page 1sur 2

Tema 8: Punteros

Introduccin:
Declaracin de Punteros:
Para declarar un puntero en C utilizamos el carcter *. Este carcter debe acompaar al tipo de variable al que apunta. Su objetivo es poder acceder a una determinada variable. Declarar un puntero no equivale a declarar una variable de dicho tipo.

El valor NULL en los punteros:


Es importante que los punteros apunten siempre a una variable. Cuando no puede saberse en el momento de la declaracin a qu variable tiene que apuntar el puntero se usa el valor NULL como valor inicial. El formato de la funcin printf para los punteros es %p, obteniendo su valor en hexadecimal.

Operadores Especficos de Punteros:


Existen dos operadores especficos de manejo de punteros: &: operador de direccin. Se aplica como prefijo a cualquier variable, y devuelve la direccin en la que se encuentra almacenada la variable. *: operador de contenido. Se aplica como prefijo a un puntero, y devuelve el valor contenido en la direccin de memoria almacenada en el puntero.

Mientras que el operador & se aplica a una variable, el operador * puede aplicarse a cualquier expresin de tipo puntero. Los punteros, por su segundo nivel de prioridad, se evalan de derecha a izquierda.

Aritmtica de punteros:
Las operaciones aritmticas admisibles para los punteros son: Sumarle o restarle un entero, obteniendo como resultado un puntero del mismo tipo. Restar dos punteros del mismo tipo, obteniendo como resultado un entero.

Operaciones entre punteros y enteros:


Si se le suma uno a un puntero, el nuevo valor del puntero apuntara al siguiente elemento en la memoria.

Resta de dos punteros:


La diferencia entre dos punteros es el nmero de veces que cabe entre los dos punteros el tipo de datos al que apuntan.

Comparaciones de Punteros:
Si queremos comparar los valores de las variables, deberemos usar el operador de contenido ==.

Punteros a Punteros:
Si declaramos int * pEntero = NULL, estamos declarando una variable, de nombre pEntero, y de tipo puntero a int. De este modo, a pEntero, al ser una variable ms, se le puede aplicar el operador &pEntero, obteniendo su direccin. Tenemos, as, la direccin de un puntero, es decir, un puntero a puntero a int. Ejemplo: int ** pPunteroEntero = NULL;

Uso de Punteros para devolver ms de un valor:


Una funcin slo puede devolver un valor en cada llamada. Sin embargo, hay veces en las que necesitamos que una funcin devuelva o modifique ms de un valor. Para ello, debemos pasar como parmetro la direccin de la variable que queramos modificar, y operar dentro de la funcin con el contenido de los parmetros formales. Lo que hacemos as es pasarle la direccin de la variable, y operar en su contenido, modificndolo.

Vous aimerez peut-être aussi