Cosa cambia? Cambia che adesso potremmo riferirci al tipo di dato utilizzando ad esempio Intero al posto di int, in questo modo:
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
- ⏱️ 9 ore di corso registrato
- 🧩 Più di 50 algoritmi risolti passo passo
- 🎯 Livello base
- 💻 100% online, fruibile quando vuoi
Cioè stiamo così utilizzando un alias definito dall'utente.
Facciamo un altro esempio: typedef char *Stringa;
in questo caso il puntatore a carattere viene ribattezzato Stringa e quindi posso definire le due variabili s1 ed s2 in questo modo:
Stringa s1, s2;
Uso di typedef struct in C
L'istruzione typedef può essere utilizzata anche con i dati di tipo struct in C, per definire nuovi tipi di dato.
La sintassi è questa:
typedef struct {
<definizione_campi>
} <nome_tipo>
Quindi facciamo un esempio:
typedef struct {
char cognome[20];
char nome[20];
int anno_nascita;
} Studente;
Studente s1,s2,s3;
In questo modo si elimina la necessità di ripetere la parola struct.
Esempio d'uso di typedef struct in C
Facciamo dunque un piccolo esempio d'uso delle strutture in C a scopo didattico.
Creare una semplice struct alunno che contiene il nome, il cognome e il voto. Dopo inserire da 1 a 20 alunni al massimo e permettere di effettuare una ricerca per cognome dell'alunno. Se ci sono più alunni con lo stesso cognome visualizzarli entrambi.
Quindi, definiamo una struttura alunno con all'interno il campo nome e cognome di tipo char e voto di tipo int.
Per il momento non utilizzeremo le funzioni ma svilupperemo il programma all'interno del main.
Facciamo un controllo sul numero degli alunni, con il ciclo do while, in modo da evitare di inserire un numero non valido.
Dopo con un ciclo for inseriamo i dati degli alunni. Poi chiediamo quale cognome dobbiamo cercare e memorizziamo la risposta nella variabile cognome_alunno. Dopo utilizzando la funzione strcmp controlliamo se qualche dato nella nostra struttura contiene quel cognome e se vero visualizziamo i risultati. Se a fine ciclo la variabile trovato è rimasta a zero, allora vuol dire che non abbiamo trovato nessun cognome.
N.B. Sarebbe opportuno inserire un identificativo di ciascun alunno, un codice univoco. Nelle prossime lezioni vedremo come fare.
Ecco dunque il listato completo di questo semplicissimo esempio sulle strutture in C.
#include <stdio.h>
#include <string.h>
#define MAX 20
typedef struct {
char cognome[30];
char nome[20];
int voto;
} alunno;
int main() {
alunno a[MAX]; /*tabella come array di struttura, si crea un vettore di elementi di tipo alunno*/
int n,i,j,trovato;
char cognome_alunno[20];
do{
printf("Inserisci il numero di alunni:");
scanf("%d", &n);
} while (n<1 || n>MAX);
for(i=0; i<n; i++){
printf("Inserisci il cognome dell'alunno:");
scanf("%s", a[i].cognome);
printf("Inserisci il nome dell'alunno:");
scanf("%s", a[i].nome);
printf("Inserisci il voto:");
scanf("%d", &a[i].voto);
}
printf("\nInserisci il cognome dell'alunno da cercare: ");
scanf("%s", cognome_alunno);
trovato=0;
for(j=0;j<n;j++){
if(strcmp(a[j].cognome, cognome_alunno)==0) {
printf("\nAlunno trovato in posizione %d\nnome:%s\nvoto:%d",j+1,a[j].nome, a[j].voto);
trovato=1;
}
}
if (!trovato)
printf("\nAlunno non trovato.\n");
return 0;
}
Abbiamo realizzato un semplice esempio utilizzando typedef struct C. Nelle prossime lezioni affronteremo altri esempi.
Alcuni link utili
Media per riga e per colonna
Somma elementi diagonale principale di una matrice
Come sommare gli elementi della cornice esterna
Come sommare due matrici
Sommare dei numeri di una matrice
Matrice trasposta
Prodotto tra matrici
Ricerca elementi in una matrice
Inserire dati in una matrice
Tavola pitagorica in C
Array multidimensionali
Programma sui triangoli in C
Media dei numeri in un array
Array con numeri random
Quick sort in C
📘 Vuoi approfondire l'argomento? Dai un'occhiata a 50 Algoritmi per imparare C++ — vedi su Amazon.
Selection sort in C
Merge sort in C
Insertion Sort in C