Menu
Coddy logo textTech

L’operatore freccia (->)

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 45 di 63.

Quando lavori con puntatori a struct, per accedere ai membri della struct è necessaria una sintassi speciale. Anche se potresti usare insieme l’operatore di dereferenziazione e la notazione con il punto, C fornisce un operatore più pratico, specifico per questo scopo: l’operatore freccia (->).

L’operatore freccia consente di accedere ai membri di una struct tramite un puntatore in modo chiaro e leggibile:

ptr->member

È equivalente a scrivere (*ptr).member, ma è molto più conciso.

Ecco come funziona nella pratica:

struct Point p1 = {10, 20};
struct Point *ptr = &p1;

// Uso del operador flecha
printf("x = %d, y = %d\n", ptr->x, ptr->y);

// Esto es lo mismo que:
printf("x = %d, y = %d\n", (*ptr).x, (*ptr).y);

L’operatore freccia rende il tuo codice più pulito e facile da leggere, soprattutto quando lavori con strutture dati complesse. È il modo standard per accedere ai membri di una struct tramite puntatori nella programmazione in C.

challenge icon

Sfida

Facile

Crea un programma C che mostri come usare l’operatore freccia per accedere ai membri di una struct tramite puntatori. Il programma deve:

  1. Definire una struct denominata Book con i seguenti membri:
    • Un intero id per memorizzare l’ID del libro
    • Un array di caratteri title di dimensione 40 per memorizzare il titolo del libro
    • Un array di caratteri author di dimensione 30 per memorizzare il nome dell’autore
    • Un valore float price per memorizzare il prezzo del libro
    • Un intero pages per memorizzare il numero di pagine
  2. Nella funzione principale, creare una variabile Book denominata myBook
  3. Dichiarare un puntatore a una struct Book denominato bookPtr
  4. Assegnare l’indirizzo di myBook a bookPtr
  5. Leggere i seguenti valori di input e assegnarli ai membri della struct usando l’operatore freccia tramite il puntatore:
    • Leggere un intero per l’ID e assegnarlo usando bookPtr->id
    • Leggere una stringa per il titolo e assegnarla usando bookPtr->title
    • Leggere una stringa per l’autore e assegnarla usando bookPtr->author
    • Leggere un valore float per il prezzo e assegnarlo usando bookPtr->price
    • Leggere un intero per le pagine e assegnarlo usando bookPtr->pages
  6. Dopo aver letto tutti i valori, eseguire le seguenti operazioni usando l’operatore freccia:
    • Applicare uno sconto del 10% al prezzo: bookPtr->price = bookPtr->price * 0.9;
    • Aggiungere 50 pagine bonus: bookPtr->pages += 50;
  7. Stampare le informazioni del libro usando l’operatore freccia per accedere a ciascun membro, esattamente nel seguente formato:
    • Book Information:
    • ID: [id]
    • Title: [title]
    • Author: [author]
    • Price: [price]
    • Pages: [pages]
  8. Calcolare e stampare il prezzo per pagina usando l’operatore freccia nel formato: Price per page: [price_per_page]

Questa sfida verifica la tua comprensione dell’operatore freccia per accedere ai membri di una struct tramite puntatori. Farai pratica con la sintassi ptr->member per leggere e scrivere i membri di una struct, dimostrando che è equivalente a (*ptr).member, ma molto più pratica e leggibile.

Provalo tu

#include <stdio.h>
#include <string.h>

// TODO: Definisci qui la struct Book

int main() {
    // TODO: Crea una variabile di tipo Book chiamata myBook
    
    // TODO: Dichiara un puntatore a Book chiamato bookPtr
    
    // TODO: Assegna l'indirizzo di myBook a bookPtr
    
    // Leggi i valori di input
    int id;
    char title[40];
    char author[30];
    float price;
    int pages;
    
    scanf("%d", &id);
    scanf("%s", title);
    scanf("%s", author);
    scanf("%f", &price);
    scanf("%d", &pages);
    
    // TODO: Assegna i valori di input ai membri della struct usando l'operatore freccia
    
    // TODO: Applica uno sconto del 10% a price usando l'operatore freccia
    
    // TODO: Aggiungi 50 pagine bonus usando l'operatore freccia
    
    // TODO: Stampa le informazioni sul libro usando l'operatore freccia
    
    // TODO: Calcola e stampa il prezzo per pagina usando l'operatore freccia
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online