TYPEDEF
typedef viene usata per
assegnare un alias a un qualsiasi tipo, fondamentale o derivato; non
definisce un nuovo tipo, ma introduce un nome che corrisponde a uno
dei tipi definiti
typedef
char C;
dopo questa
dichiarazione potrò utilizzare per dichiarare variabili invece
che l'identificatore char l'identificatore C
typedef
struct Nodo{
int
tag;
struct
Nodo *sin;
struct
Nodo *des;
}Nodo;
Nodo
d;
typedef
char Colonna[13];
Colonna
k;
for
(i = 0; i < 13; i++)
k[i]
= 'x';
typedef
struct Linea{
Punto
p1;
Punto
p2;
}Linea;
//uso la lettera maiuscola per distinguerla dalle variabili e dalle
costanti
Punto
a, b;
Linea
linea;
a.x
= 0;
a.y
= 1;
b.x
= 1;
b.y
= 0;
linea.p1
= a;
linea.p2
= b;
void
medio(Linea l, Punto *m){
(*m).x
= (l.p1.x + l.p2.x)/2;
(*m).y
= ()/2;
}
int
main(){
Punto
a,b,m;
Linea
l;
scanf(“
%d”, &(a.x));
medio(l,
&m); //
}
(*m).x
= dereferenzio m e prendo c; posso scrivere anche m -> x
COME NON SPRECARE MEMORIA NELL’ALLOCAZIONE
DINAMICA CON LE STRINGHE
es.
typedef
struct {
char
titolo[30];
char
autore[15];
}
Libro;
Libro
*lib;
lib
= (Libro *) malloc (sizeof(Libro));
strcpy(
lib -> titolo, “La divina commedia”);
strcpy(
lib -> autore, “Dante”);
in questa maniera
rischiamo di non avere spazio per stringhe lunghe, oppure di sprecare
spazio nel caso dobbiamo inserire stringhe corte; meglio procedere in
questa maniera:
typedef
struct {
char
*titolo;
char
*autore;
}
Libro;
Libro
*lib;
lib
= (Libro *) malloc (sizeof(Libro));
così ho allocato
spazio solo per due puntatori, prima di inserire le stringhe per
titolo e autore bisogna allocare lo spazio necessario a contenerle
lib->titolo
=(char *) malloc (sizeof(char)*40);
lib->autore
=(char *) malloc (sizeof(char)*15);
strcpy(
lib->titolo, “Harry Potter e l’ordine della fenice”);
strcpy(
lib->autore, “J.K. Rowling”);
IL TIPO ENUMERATIVO
programma per gestire
un negozio di vestiti
S M L XL XXL
0 1 2 3 4
enum
Taglia {S, M, L, XL, XXL}
se voglio evitare di
dover scrivere enum a ogni dichiarazione:
typedef
enum Taglia {S, M, L, XL, XXL} Taglia;
Taglia
h;
if
(h == s)
typedef
struct pantaloni{
Taglia
t;
Colore
c;
}Pantaloni;
typedef
enum colore{Red, Green,..., Black} Colore;
gli elementi definiti
in realtà sono numeri, es. Red = 0
Pantaloni
p;
p.t
= S;
p.c
= Black;
Non è possibile
stampare i nomi effettivi degli enumeratori
|