Puntatori a Struct
Il linguaggio di programmazione C consente di creare puntatori non solo ai tipi di dati standard, ma anche alle strutture (poiché una struttura è un tipo di dato personalizzato).
La dichiarazione e l'inizializzazione di un puntatore avvengono in questo modo:
struct <name_of_struct>
{
<field_of_struct>;
};
struct <name_of_struct>* <name_of_pointer>;
Se <name_of_pointer> è un puntatore a una struttura,
allora *(<name_of_pointer>) rappresenta la struttura stessa.
Per accedere ai campi di una struttura tramite un puntatore, è necessario utilizzare l'operatore ->.
-> è un analogo dell'operatore di accesso ai campi della struttura .
main.c
12345678910111213141516171819202122#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }
Questo programma mostra come lavorare con una struttura Point che memorizza due coordinate, x e y. Nella funzione main, viene creata una variabile p1 a cui vengono assegnati i valori delle coordinate, quindi viene inizializzato un puntatore a questa struttura. Utilizzando l'operatore ->, il programma accede ai campi della struttura tramite il puntatore e stampa le coordinate del punto sullo schermo.
Swipe to start coding
Si dispone di uno studente con voti in 3 materie: Math, Physics e Programming.
L'obiettivo è calcolare la media dei voti dello studente e determinare se ha superato il corso.
All'interno della funzione calculateAverageAndCheck:
- Accedere al voto di ciascuna materia utilizzando il puntatore.
- Somma di tutti e tre i voti per ottenere il punteggio totale.
- Dividere il totale per
3.0per calcolare la media dei voti. - Confrontare il risultato con la soglia di superamento di 60.
- Se la media è maggiore o uguale a 60, restituire
true(lo studente ha superato). - Altrimenti, restituire
false(lo studente non ha superato).
Example
| Math | Physics | Programming | Average | Result |
|---|---|---|---|---|
| 85.0 | 55.0 | 60.0 | 66.67 | ✅ Passed |
| 50.0 | 40.0 | 45.0 | 45.00 | ❌ Failed |
| 60.0 | 60.0 | 60.0 | 60.00 | ✅ Passed |
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you show me the code example for this Point structure?
How does the `->` operator differ from the dot operator in C?
Can you explain how to initialize a pointer to a structure in more detail?
Fantastico!
Completion tasso migliorato a 4.35
Puntatori a Struct
Scorri per mostrare il menu
Il linguaggio di programmazione C consente di creare puntatori non solo ai tipi di dati standard, ma anche alle strutture (poiché una struttura è un tipo di dato personalizzato).
La dichiarazione e l'inizializzazione di un puntatore avvengono in questo modo:
struct <name_of_struct>
{
<field_of_struct>;
};
struct <name_of_struct>* <name_of_pointer>;
Se <name_of_pointer> è un puntatore a una struttura,
allora *(<name_of_pointer>) rappresenta la struttura stessa.
Per accedere ai campi di una struttura tramite un puntatore, è necessario utilizzare l'operatore ->.
-> è un analogo dell'operatore di accesso ai campi della struttura .
main.c
12345678910111213141516171819202122#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }
Questo programma mostra come lavorare con una struttura Point che memorizza due coordinate, x e y. Nella funzione main, viene creata una variabile p1 a cui vengono assegnati i valori delle coordinate, quindi viene inizializzato un puntatore a questa struttura. Utilizzando l'operatore ->, il programma accede ai campi della struttura tramite il puntatore e stampa le coordinate del punto sullo schermo.
Swipe to start coding
Si dispone di uno studente con voti in 3 materie: Math, Physics e Programming.
L'obiettivo è calcolare la media dei voti dello studente e determinare se ha superato il corso.
All'interno della funzione calculateAverageAndCheck:
- Accedere al voto di ciascuna materia utilizzando il puntatore.
- Somma di tutti e tre i voti per ottenere il punteggio totale.
- Dividere il totale per
3.0per calcolare la media dei voti. - Confrontare il risultato con la soglia di superamento di 60.
- Se la media è maggiore o uguale a 60, restituire
true(lo studente ha superato). - Altrimenti, restituire
false(lo studente non ha superato).
Example
| Math | Physics | Programming | Average | Result |
|---|---|---|---|---|
| 85.0 | 55.0 | 60.0 | 66.67 | ✅ Passed |
| 50.0 | 40.0 | 45.0 | 45.00 | ❌ Failed |
| 60.0 | 60.0 | 60.0 | 60.00 | ✅ Passed |
Soluzione
Grazie per i tuoi commenti!
single