La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003.

Presentazioni simili


Presentazione sul tema: "Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003."— Transcript della presentazione:

1 Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a

2 Strutture Una struttura è un insieme ordinato di variabili, che prendono il nome di membri o elementi o campi. La struttura è un primo esempio di tipo composto (o equivalentemente tipo di dati aggregati), essendo composto da variabili di tipo diverso. Una struttura non può contenere una variabile dello stesso tipo della struttura stessa

3 Strutture Una struttura è definita usando la parola chiave struct struct nome_struttura { tipo1 var1; tipo2 var2; …. }; In questo modo è definito il tipo composto nome_struttura composto dalle variabili var1, var2, etc.

4 Strutture Es.: struct anagrafica { char nome[80]; char cognome[80]; int anni; float reddito; }; In questo modo è stato definito il tipo anagrafica

5 Strutture Essendo un tipo, non viene allocata alcuna memoria. Si alloca memoria ad una o più variabile di tipo struttura tramite la definizione di variabile nome_struttura var1, var2,...; Es.: anagrafica persona; L’istruzione alloca memoria per la variabile persona di tipo anagrafica.

6 Strutture E’ possibile definire una o più variabili di tipo struttura anche nel modo seguente: struct anagrafica { char nome[80]; char cognome[80]; int anni; float reddito; }persona1,persona2;

7 Strutture L’inizializzazione di una struttura è ottenuta elencando nelle parentesi graffe i valori dei singoli membri seguendo l’ordine con cui compaiono nella struttura e rispettandone il tipo: Es. anagrafica persona={"Pio", "Picchio", 50, }; L’accesso ai singoli membri avviene tramite l’uso dell’operatore punto (.). Es. persona.nome = "Pio "; persona.anni= 50;

8 Strutture E’ possibile raggruppare in array le strutture. Per accedere ad una struttura specifica all’interno di un array di strutture, occorre indicizzare il nome della struttura. Es. anagrafica persona[100]; persona[10].nome = "Pio"; persona[10].anni= 50;

9 Strutture E’ possibile definire puntatori a strutture. Es. anagrafica *persona, persona1; persona = &persona1; int *annip = &persona1.anni // annip punta al membro anni di persona1 E’ possibile accedere ai membri di una struttura attraverso un puntatore alla struttura usando l’operatore freccia (->). anagrafica *persona, persona1; persona = &persona1; persona->anni = 50;

10 Strutture L’operatore freccia e l’operatore punto si chiamano operatori di accesso ai membri oppure selettori di membro. Mentre non è possibile usare all’interno della struttura una variabile dello stesso tipo della struttura stessa, è possibile usare variabili di tipo puntatore alla struttura stessa struct radar{int longitudine, latitudine, altezza; radar fiumicino }; //NO !! struct radar{int longitudine, latitudine, altezza; radar *fiumicino }; //OK

11 Unioni Una unione è una locazione di memoria condivisa da due o più variabili ed è dichiarata usando la parola chiave union. La dimensione della locazione di memoria di una variabile union deve essere sufficiente a contenere la dimensione della variabile avente dimensione massima. union conn_msg {int conn_req, conn_rej; char msg[9]; }; conn_msg conn; // conn deve contenere 9 bytes (p.e. 12 bytes)

12 Unioni L’accesso ai membri di una union avviene tramite l’operatore punto (.) l’operatore freccia (->) con le stesse modalità della struct. Anche la dichiarazione di variabili union segue le stesse modalità della struct.

13 Unioni Un particolare tipo di union in C++ è la union anonima. Una union anonima non ha un nome di tipo e non è possibile dichiarare alcuna variabile con questo genere di union. I membri di una union anonima: condividono la stessa locazione di memoria sono trattati come variabili nell’ambito in cui è definita la union anonima

14 Unioni Es. union {int conn_req, conn_rej; char msg[9]; };. msg[0]=‘A’; msg[1]=‘B’;. conn_req=10; msg, conn_req e conn_rej sono considerate come variabili che condividono la stessa locazione di memoria e devono essere distinte da altri nomi definiti nell’ambito di definizione della union anonima.


Scaricare ppt "Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003."

Presentazioni simili


Annunci Google