Programa en C para demostrar el uso de punteros.

Programa en C para demostrar el uso de punteros.

Escriba un programa en C para crear, inicializar y demostrar el uso de punteros. Cómo acceder a valores y direcciones usando una variable de puntero en programación C.

Conocimiento requerido

Programación básica en C, Punteros

Básico de punteros

Al ser un lenguaje de programación de alto nivel, C es extremadamente poderoso en la programación de bajo nivel.

Pointer es una de sus herramientas que proporciona un manejo de memoria de bajo nivel. Los datos en la memoria se organizan como una secuencia de bytes. Donde se accede a cada byte a través de su dirección única. Estas direcciones van desde cero (0) hasta algún número entero positivo. Los punteros en la programación C proporcionan una manera eficiente de manejar las actividades de memoria de bajo nivel.

Al igual que otras variables, los punteros también permiten declarar variables de tipo puntero. Ahora, ¿qué significa eso? Al igual que otras variables, podemos declarar una variable de puntero. Pero, ¿qué tipo de datos contiene la variable de puntero? A diferencia de otras variables, el puntero contiene la dirección de memoria de alguna otra variable. Más adelante veremos el uso de estas direcciones de memoria y cómo los punteros son una varita mágica para los programadores de C. Ahora familiaricémonos con algunos conceptos de punteros.

Leyendo la dirección de memoria de cualquier variable

Sabemos que todas y cada una de las variables declaradas tienen un nombre, una ubicación de memoria y un valor. Nombre es el nombre identificador que damos durante la declaración de la variable. Los valores son las constantes que contiene la variable.
Por ejemplo - int num =10; num es el nombre de la variable y 10 es el valor almacenado en esa variable. Pero, ¿qué pasa con la dirección de memoria?

En la programación C, el operador unario &(Dirección de) se usa para obtener la dirección de memoria de cualquier variable. La dirección del operador cuando tiene el prefijo de cualquier variable devuelve la dirección de memoria real de esa variable. Veamos un programa para obtener la dirección de memoria real de las variables.

Programa para obtener la dirección de memoria usando la dirección del operador

/**
 * C program to get memory address using address of operator
 */

#include <stdio.h>

int main()
{
    /* Simple declarations */
    char character = 'C';
    int integer = 1;
    float real = 10.4f;
    long long biginteger = 989898989ll;

    /* Print variable value with their memory address */
    printf("Value of character = %c, Address of character = %u\n", character, &character);
    printf("Value of integer = %d, Address of integer = %u\n", integer, &integer);
    printf("Value of real = %f, Address of real = %u\n", real, &real);
    printf("Value of biginteger = %lld, Address of biginteger = %u", biginteger, &biginteger);

    return 0;
}

Nota: El programa anterior producirá resultados diferentes en diferentes sistemas. También puede usar cualquier otro especificador de formato que no sea %u para imprimir direcciones de memoria. Puede utilizar cualquier especificador de formato que imprima un número entero. Intenta usar %x %d %i %ld etc.

Salida

Value of character = C, Address of character = 6356751
Value of integer = 1, Address of integer = 6356744
Value of real = 10.400000, Address of real = 6356740
Value of biginteger = 989898989, Address of biginteger = 6356728

Creación, inicialización y uso de variables de puntero

Los punteros pueden manejar muchas operaciones de memoria de bajo nivel (incluida la asignación de memoria dinámica). Sin embargo, antes de profundizar en los punteros, primero aprendamos a declarar una variable de puntero. Al igual que otras declaraciones de variables, el puntero también sigue la misma sintaxis -

Sintaxis para declarar variable de puntero

<data-type> * <variable-name>

Ejemplo de declaración de puntero

int * integer_pointer;
float * float_ptr
char * charPtr;
long * lptr;

Programa para crear, inicializar y usar puntero variable

/**
 * C program to create, initialize and use pointers
 */

#include <stdio.h>

int main()
{
    int num = 10;
    int * ptr;

    /* Stores the address of num to pointer type */
    ptr = &num;

    printf("Address of num = %d\n", &num);
    printf("Value of num = %d\n", num);

    printf("Address of ptr = %d\n", &ptr);
    printf("Value of ptr = %d\n", ptr);
    printf("Value pointed by ptr = %d\n", *ptr);

    return 0;
}

Salida

Address of num = 6356748.
Value of num = 10
Address of ptr = 6356744
Value of ptr = 6356748
Value pointed by ptr = 10

Feliz codificación 😉

Publicación recomendada

  • Ejercicios de programación de arreglos y matrices
  • Ejercicios de programación de cadenas
  • Ejercicios de programación de funciones y recursión