18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

struct nome {<br />

tipo-campo nome-campo ;<br />

[tipo-campo nome-campo ; ... ]<br />

} ;<br />

Dopo la dichiarazione, “struct nome” è il nome di un nuovo tipo che può essere usato <strong>per</strong> dichiarare<br />

variabili e puntatori. Esempio:<br />

int count;<br />

struct stat stbuf;<br />

struct stat *stptr;<br />

Le strutture si possono inizializzare in tre modi diversi:<br />

1. elencando i campi separati da virgola (sintassi tradizionale);<br />

2. dichiarando i campi con i due-punti (sintassi di gcc fin da prima della standardizzazione);<br />

3. usando l’assegnamento ai campi (sintassi standard C99, supportata anche dal gcc).<br />

La prima forma è da evitarsi in quanto poco leggibile, la seconda è sconsigliata in quanto non<br />

standard. In tutti e tre i casi, ogni campo non esplicitamente inizializzato viene azzerato bit-<strong>per</strong>bit<br />

dal compilatore. In questo esempio le tre strutture sono uguali, con il campo priv inizializzato<br />

a zero:<br />

struct item {<br />

int id;<br />

char *name;<br />

int value;<br />

int priv;<br />

};<br />

struct item i1 = {3, "aldo", 45};<br />

struct item i2 = {id: 3, name: "aldo", value: 45};<br />

struct item i3 = {.id = 3, .name = "aldo", .value = 45};<br />

Un altro esempio di strutture dati è la seguente<br />

struct data {<br />

int giorno;<br />

in mese;<br />

int anno;<br />

} giorno1, giorno2;<br />

struct data giorno3;<br />

Ho definito un nuovo tipo di nome data e contemporaneamente due variabili giorno1 e giorno2.<br />

Poi una nuova variabile dello stesso tipo giorno3.<br />

Per far riferimento ai singoli dati si usa la notazione<br />

.<br />

<strong>per</strong> esempio:<br />

83

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!