Programma C per dimostrare l'uso dei puntatori

Programma C per dimostrare l'uso dei puntatori

Scrivete un programma C per creare, inizializzare e dimostrare l'uso dei puntatori. Come accedere a valori e indirizzi utilizzando una variabile puntatore nella programmazione C.

Conoscenze richieste

Programmazione C di base, Puntatori

Base dei puntatori

Essendo un linguaggio di programmazione di alto livello, C è estremamente potente con una programmazione di basso livello.

Pointer è uno dei suoi strumenti che fornisce una gestione della memoria di così basso livello. I dati in memoria sono organizzati come una sequenza di byte. Dove si accede a ogni byte attraverso il suo indirizzo univoco. Questi indirizzi vanno da zero (0) a un numero intero positivo. I puntatori nella programmazione C forniscono un modo efficiente per gestire le attività di memoria di basso livello.

Come altre variabili, anche i puntatori consentono di dichiarare variabili di tipi di puntatori. Ora, cosa significa? Come altre variabili, possiamo dichiarare una variabile puntatore. Ma che tipo di dati contiene la variabile puntatore? A differenza di altre variabili, il puntatore contiene l'indirizzo di memoria di qualche altra variabile. Vedremo più avanti l'uso di questi indirizzi di memoria e come i puntatori siano una bacchetta magica per i programmatori C. Cerchiamo ora di familiarizzare con alcuni concetti di puntatore.

Lettura dell'indirizzo di memoria di qualsiasi variabile

Sappiamo che ogni variabile dichiarata ha un nome, una posizione di memoria e un valore. Nome è il nome identificativo che diamo durante la dichiarazione della variabile. I valori sono le costanti contenute nella variabile.
Ad esempio - int num =10; num è il nome della variabile e 10 è il valore memorizzato in quella variabile. Ma per quanto riguarda l'indirizzo di memoria?

Nella programmazione C l'operatore unario &(Indirizzo di) viene utilizzato per ottenere l'indirizzo di memoria di qualsiasi variabile. L'indirizzo dell'operatore se preceduto da qualsiasi variabile restituisce l'indirizzo di memoria effettivo di quella variabile. Vediamo un programma per ottenere l'indirizzo di memoria effettivo delle variabili.

Programma per ottenere l'indirizzo di memoria utilizzando l'indirizzo dell'operatore

/**
 * 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: Il programma di cui sopra produrrà risultati diversi su sistemi diversi. Inoltre puoi usare qualsiasi altro identificatore di formato diverso da %u per stampare gli indirizzi di memoria. È possibile utilizzare qualsiasi identificatore di formato che stampa un numero intero. Prova a usare %x %d %i %ld ecc.

Uscita

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

Creazione, inizializzazione e utilizzo di variabili puntatore

I puntatori possono gestire molte operazioni di memoria di basso livello (inclusa l'allocazione dinamica della memoria). Tuttavia, prima di approfondire i puntatori, impariamo prima a dichiarare una variabile puntatore. Come altre dichiarazioni di variabili, anche il puntatore segue la stessa sintassi -

Sintassi per dichiarare la variabile puntatore

<data-type> * <variable-name>

Esempio di dichiarazione del puntatore

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

Programma per creare, inizializzare e utilizzare una variabile puntatore

/**
 * 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;
}

Uscita

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

Buona codifica 😉

Post consigliato

  • Esercizi di programmazione di array e matrici
  • Esercizi di programmazione delle stringhe
  • Esercizi di programmazione di funzioni e ricorsività