Fondamenti di Informatica 2 Ingegneria Informatica Docente Giovanni
- Slides: 14
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a. a. 2002 -2003
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
Strutture Una struttura è definita usando la parola chiave struct nome_struttura { tipo 1 var 1; tipo 2 var 2; …. }; In questo modo è definito il tipo composto nome_struttura composto dalle variabili var 1, var 2, etc.
Strutture Es. : struct anagrafica { char nome[80]; char cognome[80]; int anni; float reddito; }; In questo modo è stato definito il tipo anagrafica
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 var 1, var 2, . . . ; Es. : anagrafica persona; L’istruzione alloca memoria per la variabile persona di tipo anagrafica.
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; }persona 1, persona 2;
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, 375. 30}; L’accesso ai singoli membri avviene tramite l’uso dell’operatore punto (. ). Es. persona. nome = "Pio "; persona. anni= 50;
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;
Strutture E’ possibile definire puntatori a strutture. Es. anagrafica *persona, persona 1; persona = &persona 1; int *annip = &persona 1. anni // annip punta al membro anni di persona 1 E’ possibile accedere ai membri di una struttura attraverso un puntatore alla struttura usando l’operatore freccia (->). anagrafica *persona, persona 1; persona = &persona 1; persona->anni = 50;
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
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)
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.
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
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.
- Giovanni danese
- Fondamenti di informatica 2
- Fondamenti di informatica 2
- Ingegneria dell'informazione informatica e statistica
- Ingegneria informatica pisa
- Docente tradicional vs docente innovador
- Impedenzimetro
- Controllo ad anello aperto
- Fondamenti biogenetici
- Fondamenti di chimica organica smith usato
- Fondamenti di automatica benvenuti
- Fondamenti di astronomia
- Teleonomica pedagogia
- Giddens fondamenti di sociologia
- I componenti principali di un computer