Punteros en C Programación con ejemplos

Un puntero es una variable que almacena la dirección de otra variable. A diferencia de otras variables que contienen valores de cierto tipo, el puntero contiene la dirección de una variable. Por ejemplo, una variable de número entero contiene (o puede decir almacena) un valor de número entero, sin embargo, un puntero de número entero contiene la dirección de una variable de número entero. En esta guía, discutiremos los punteros en la programación en C con la ayuda de ejemplos.

Antes de discutir sobre los punteros en C, tomemos un ejemplo simple para entender qué queremos decir con la dirección de una variable.

¿Un ejemplo simple para entender cómo acceder a la dirección de una variable sin punteros?

En este programa, tenemos una variable num de tipo int. El valor de num es 10 y este valor debe almacenarse en algún lugar de la memoria, ¿verdad? Se asigna un espacio de memoria para cada variable que contiene el valor de esa variable, este espacio de memoria tiene una dirección. Por ejemplo, vivimos en una casa y nuestra casa tiene una dirección, lo que ayuda a otras personas a encontrar nuestra casa. De la misma manera, el valor de la variable se almacena en una dirección de memoria, lo que ayuda al programa C a encontrar ese valor cuando es necesario.

Digamos que la dirección asignada a la variable num es 0x7fff5694dc58, lo que significa que cualquier valor que le asignemos a num debe almacenarse en la ubicación: 0x7fff5694dc58. Vea el diagrama a continuación.

Salida:

Value of variable num is: 10Address of variable num is: 0x7fff5694dc58

Un ejemplo simple de punteros en C

Este programa muestra cómo se declara y se usa un puntero. Hay varias otras cosas que podemos hacer con los punteros, las discutimos más adelante en esta guía. Por ahora, solo necesitamos saber cómo vincular un puntero a la dirección de una variable.

Un punto importante a tener en cuenta es: el tipo de datos del puntero y la variable debe coincidir, un puntero int puede contener la dirección de la variable int, de manera similar, un puntero declarado con el tipo de datos flotante puede contener la dirección de una variable flotante. En el siguiente ejemplo, el puntero y la variable son de tipo int.

Resultado:

Address of variable num is: 0x7fff5694dc58

Punteros de C: operadores que se usan con punteros

Analicemos los operadores & y * que se usan con punteros en C.

«Dirección de» (&) Operador

Ya hemos visto en el primer ejemplo que podemos mostrar la dirección de una variable usando ampersand sign. He usado & num para acceder a la dirección de la variable num. El operador & también se conoce como «Dirección de» Operador.

printf("Address of var is: %p", &num);

Nota importante:% p es un especificador de formato que se utiliza para mostrar la dirección en formato hexadecimal.
Ahora que ya sabe cómo obtener la dirección de una variable, pero ¿cómo almacenar esa dirección en alguna otra variable? Ahí es donde los punteros entran en escena. Como se mencionó al comienzo de esta guía, los punteros en la programación C se utilizan para mantener la dirección de otras variables.

El puntero es como otra variable, la principal diferencia es que almacena la dirección de otra variable en lugar de un valor.

Operador «Valor en la dirección» (*)

El operador * también se conoce como el operador Valor en la dirección.

Cómo declarar un puntero ?

Los anteriores son algunos ejemplos de declaraciones de puntero. Si necesita un puntero para almacenar la dirección de la variable entera, entonces el tipo de datos del puntero debe ser int. El mismo caso es con los otros tipos de datos.

Al usar el operador * podemos acceder al valor de una variable a través de un puntero.
Por ejemplo:

double a = 10;double *p;p = &a;

* p nos daría el valor de la variable a. La siguiente declaración mostraría 10 como salida.

printf("%d", *p);

De manera similar, si asignamos un valor a * puntero como este:

*p = 200;

Cambiaría el valor de v ariable a. La declaración anterior cambiará el valor de a de 10 a 200.

Ejemplo de puntero que demuestra el uso de & y *

Salida :

Value of variable var is: 10Value of variable var is: 10Address of variable var is: 0x7fff5ed98c4cAddress of variable var is: 0x7fff5ed98c4cAddress of pointer p is: 0x7fff5ed98c50

Tomemos algunos ejemplos más para entenderlo mejor –
Digamos que tenemos una variable char ch y un puntero ptr que contiene la dirección de ch.

char ch="a";char *ptr;

Lea el valor de ch

printf("Value of ch: %c", ch);orprintf("Value of ch: %c", *ptr);

Cambie el valor de ch

ch = "b";or*ptr = "b";

El código anterior reemplazaría el valor a por b .

¿Puedes adivinar el resultado del siguiente programa en C?

Resultado:

Address of var is: 0x7fff5d027c58Address of var is: 0x7fff5d027c58Value of var is: 10Value of var is: 10Value of var is: 10Value of pointer p is: 0x7fff5d027c58Address of pointer p is: 0x7fff5d027c50

Más temas sobre punteros

1) Puntero a puntero: un puntero puede apuntar a otro puntero (lo que significa que puede almacenar la dirección de otro puntero), tales punteros se conocen como puntero doble O puntero a puntero.

2) Pasar punteros a una función: los punteros también se pueden pasar como un argumento a una función, usando esta característica se puede llamar a una función por referencia y también se puede pasar una matriz a una función durante la llamada.

3) Punteros de función: un puntero de función es como otro puntero, se utiliza para almacenar la dirección de una función. El puntero de función también se puede utilizar para llamar a una función en un programa en C.

Deja una respuesta

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