Introducción a los punteros en C

En C u otros lenguajes de programación, tenemos un concepto de variable. Estas variables se usan para contener valores. Uno puede usar tales variables mientras programa. Sin embargo, hay pocas tareas que no requieren variables pero requieren la dirección de esas variables. La dirección de las variables significa la ubicación de memoria real donde estas variables existen. En este tema, vamos a aprender acerca de los punteros en C. Podemos definir el puntero como un tipo de variable que contiene la dirección de cualquier otra variable que pueda tener algún valor

Usos de punteros en lenguajes de programación y C

Ahora, analicemos en qué C realmente necesitamos un puntero. Hay muchas tareas como la asignación de memoria dinámica que requiere punteros mientras se programa en C. El uso de punteros podría realizarse fácilmente.

Diferentes formas de acceder a la dirección variable en C

Tratemos de saber cuáles son las diferentes formas en que podemos imprimir la dirección de una variable en C.

Hay dos formas por las cuales podemos imprimir la dirección de una variable. Esos dos métodos son:

  1. Mediante el uso de ampersand (&) método
  2. Mediante el uso de puntero

Veamos cada método con un ejemplo.

1. Mediante el uso del método ampersand (&)

En este método, usaremos el concepto de ampersand para imprimir la dirección de una variable

Veamos esto con un ejemplo

#include
int main () (
double varNumValue= 10.2;
char varTextValue(10) = “abc”;
printf("The address of variable varNumValue: %x\n", &varNumValue );
printf("varTextValue variable address is : %x\n", &varTextValue );
return 0;
)

Ahora, copie el fragmento de código anterior y ejecútelo

Mostrará el siguiente resultado:

The address of variable varNumValue: a0665a48
The address of variable varTextValue is : a0665a3e

Aunque, uno podría ver el valor diferente que se asigna aleatoriamente mientras se ejecuta el ejemplo

El ejemplo mencionado anteriormente no se usa mucho, pero vale la pena saberlo. Ahora veamos el otro concepto que estamos discutiendo en este tema.

2. Mediante el uso de puntero

Este es un enfoque moderno para acceder a la dirección de una variable. Antes de usar el puntero, háganos saber la sintaxis general de declarar un puntero

  • La sintaxis general de declarar un puntero: una sintaxis común que usamos para declarar una variable es:

data_type *variable

Esta es una forma común de declarar cualquier puntero en C, aquí data_type representa el tipo de la variable cuya dirección debe almacenarse. * denota que la variable declarada es un puntero. una variable simplemente se usa para acceder al valor

Un ejemplo simple de esto es:

double *var_text

Después de discutir el concepto de sintaxis general de declarar un puntero , háganos saber cómo podemos usar un puntero en la programación

Para usar un puntero en C, básicamente uno debe seguir los siguientes tres pasos:

  • Definición de variable puntero
  • Asignación de la dirección de la variable cuya dirección queremos mantener en la variable del puntero
  • Ahora, una vez que tenemos una variable de puntero con la dirección, podemos recuperar nuevamente el valor de la variable de la dirección almacenada en el puntero. Esto podría hacerse usando * en C. * es simplemente uno de los operadores unarios

Usemos los pasos mencionados anteriormente con un ejemplo y luego explicaremos este ejemplo paso a paso

Ejemplo

#include
int main () (
int varNumValue = 10;
int *ipointervarNumValue;
ipointervarNumValue = &varNumValue;
printf("Address of the variable varNumValue is: %x\n", &varNumValue );
printf("Address stored in the variable ipointervarNumValue is: %x\n", ipointervarNumValue);
printf("Value of the variable *ipointervarNumValue is: %d\n", *ipointervarNumValue );
return 0;
)

Ahora, copie el fragmento de código anterior y ejecútelo

Mostrará el siguiente resultado:

Address of the variable varNumValue is: bf7b7f94
Address stored in the variable ipointervarNumValue is: bf7b7f94
Value of the variable *ipointervarNumValue is: 10

Ahora, intentemos comprender el ejemplo anterior.

La línea int varNumValue = 10; simplemente declara una variable con valor 10

La segunda línea que está al lado: int * ipointervarNumValue; simplemente se declara para almacenar la dirección de la variable

El siguiente fragmento de código que es: ipointervarNumValue = & varNumValue; se usa para mantener la dirección de la variable. Aquí, estamos usando el concepto de ampersand que discutimos anteriormente en el artículo

Ahora, simplemente podemos obtener el valor y usar un puntero en nuestro fragmento de código

Ahora, veamos diferentes tipos de punteros en C

Tipos de puntero en C

Hay diferentes tipos de puntero en C. Los tipos básicos de puntero que generalmente se usan son:

  • Puntero nulo
  • Puntero colgando
  • Punteros Genéricos
  • Puntero salvaje

Permítanos explicar cada

1. puntero nulo: Un puntero nulo es un tipo de puntero que apunta a nada. Generalmente apunta a la dirección base del segmento. En caso de que no se asigne nada al puntero, entonces tiene un valor nulo

Generalmente se usa en archivos de encabezado como stdio.h, alloc.h

2. Puntero Dangler: este tipo de puntero se puede crear eliminando el objeto sin modificar el valor del puntero

3. Puntero genérico: este tipo de puntero se declara utilizando una variable de tipo void. Dado que es de tipo de datos nulo, por lo tanto, se conoce como un puntero genérico. Este tipo de puntero no apunta a ningún dato

4. Puntero comodín: un puntero que no se ha inicializado se conoce como puntero comodín. Este tipo de puntero se inicializa durante el tiempo de ejecución cuando se necesita usarlo. Este tipo de puntero se conoce como puntero salvaje

Conclusión

Los punteros en C se utilizan para señalar la dirección de la variable. Estas variables se utilizan para la asignación dinámica de memoria en C. Estas variables se declaran con un asterisco para mostrar que la variable es un puntero. Estos se utilizan en el archivo de encabezado en la programación.

Artículos recomendados

Esta es una guía de punteros en C. Aquí discutimos los diferentes tipos y usos de punteros en C con métodos y ejemplos. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. ¿Qué es un lenguaje de programación?
  2. C vs C ++
  3. Patrones en programación C
  4. Mejores compiladores de C
  5. Guía de punteros en C ++
  6. Punteros en C # con ejemplos