C – Punteros

Anuncios

Los punteros en C son fáciles y divertidos de aprender. Algunas tareas de programación en C se realizan más fácilmente con punteros, y otras tareas, como la asignación de memoria dinámica, no se pueden realizar sin usar punteros. Por lo tanto, es necesario aprender los consejos para convertirse en un programador C perfecto. Empecemos a aprenderlos en pasos sencillos y sencillos.

Como sabe, cada variable es una ubicación de memoria y cada ubicación de memoria tiene su dirección definida a la que se puede acceder usando ampersand (&), que denota una dirección en la memoria. Considere el siguiente ejemplo, que imprime la dirección de las variables definidas:

Cuando el código anterior se compila y ejecuta, produce lo siguiente resultado –

Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6

¿Qué son los punteros?

Un puntero es una variable cuyo valor es la dirección de otra variable, es decir, dirección directa de la ubicación de la memoria. Como cualquier variable o constante, debe declarar un puntero antes de usarlo para almacenar cualquier dirección de variable. La forma general de una declaración de variable de puntero es –

type *var-name;

Aquí, el tipo es el tipo base del puntero; debe ser un tipo de datos C válido y var-name es el nombre de la variable de puntero. El asterisco * utilizado para declarar un puntero es el mismo asterisco utilizado para la multiplicación. Sin embargo, en esta declaración, el asterisco se utiliza para designar una variable como puntero. Eche un vistazo a algunas de las declaraciones de punteros válidas:

int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */

El tipo de datos real del valor de todos los punteros, ya sean enteros, flotantes, de carácter u otros , es el mismo, un número hexadecimal largo que representa una dirección de memoria. La única diferencia entre punteros de diferentes tipos de datos es el tipo de datos de la variable o constante a la que apunta el puntero.

¿Cómo usar punteros?

Hay algunas operaciones importantes, lo que haremos con la ayuda de punteros con mucha frecuencia. (a) Definimos una variable de puntero, (b) asignamos la dirección de una variable a un puntero y (c) finalmente accedemos al valor en la dirección disponible en la variable de puntero. Esto se hace usando el operador unario * que devuelve el valor de la variable ubicada en la dirección especificada por su operando. El siguiente ejemplo hace uso de estas operaciones:

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20

Punteros NULL

Siempre es una buena práctica asignar un valor NULL a una variable de puntero en caso de que no tenga una dirección exacta para asignar. Esto se hace en el momento de la declaración de la variable. Un puntero al que se le asigna NULL se denomina puntero nulo.

El puntero NULL es una constante con un valor de cero definido en varias bibliotecas estándar. Considere el siguiente programa:

#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

The value of ptr is 0

En la mayoría de los sistemas operativos, los programas no pueden acceder a la memoria en la dirección 0 porque esa memoria está reservada por el sistema operativo. Sin embargo, la dirección de memoria 0 tiene un significado especial; indica que el puntero no está destinado a apuntar a una ubicación de memoria accesible. Pero por convención, si un puntero contiene el valor nulo (cero), se supone que no apunta a nada.

Para verificar si hay un puntero nulo, puede usar una declaración «if» como sigue:

if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */

Punteros en detalle

Los punteros tienen muchos conceptos, pero fáciles, y son muy importantes para la programación en C. Los siguientes conceptos importantes de punteros deben ser claros para cualquier programador de C:

Sr.No. Concepto & Descripción
1 Aritmética de punteros

Hay cuatro operadores aritméticos que se pueden usar en punteros: ++, -, +, –

2 Matriz de punteros

Puede definir matrices para contener una serie de punteros.

3 Puntero al puntero

C le permite tener un puntero en un puntero y así sucesivamente.

4 Pasando punteros a funciones en C

Pasando un argumento por referencia o por dirección permite que el argumento pasado sea cambiado en la función de llamada por la función llamada.

5 Return puntero de funciones en C

C permite que una función devuelva un puntero a la variable local, variable estática y también a la memoria asignada dinámicamente.

Anuncios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *