Linguaggio C: PUNTATORI

Похожие документы
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

4 GLI ARRAY E LE STRINGHE

Appello di Informatica B

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

3. Terza esercitazione autoguidata: progetto gestione voli

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Introduzione alle macchine a stati (non definitivo)

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

FSM: Macchine a Stati Finiti

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

File System. Capitolo 13

INFORMATICA - I puntatori Roberta Gerboni

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

Puntatori Passaggio di parametri per indirizzo

INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C

Ingegneria del Software

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Esercizio: gestione di un conto corrente

Gestione di files Motivazioni

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Compito di Fondamenti di Informatica

Fattura Elettronica e Piattaforma Certificazione dei Crediti (PCC).

puntatori Lab. Calc. AA 2007/08 1

Manutenzione periodica al PIANO DEI CONTI

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

Esercizio 1. Esercizio 2

Soluzioni informatiche innovative MCNET DENUNCIA TELEMATICA. Manuale utente

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

I puntatori e l allocazione dinamica di memoria

Introduciamo l'uso della programmazione ad oggetti in PHP...perchè si può fare!

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio

La gestione della memoria

Manuale del software Supplemento. Comunicazione tra sensore per rilevamento oggetti O2D2xx e Siemens Simatic S / / 2011

La disposizione estetica della lettera commerciale

La codifica. dell informazione

CAPITOLO V. DATABASE: Il modello relazionale

elicaweb manuali - logistica magazzino - pagina 1 di 5

Matematica con il foglio di calcolo

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Laboratorio di Algoritmi e Strutture Dati

La programmazione nel linguaggio C

MultiBoot Guida per l'utente

costruttori e distruttori

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Manuale Operativo Gestione dei Ticket di assistenza 15 Marzo 2016

SCUOLA PRIMARIA DI MAGGIATE Classe terza

Lezione 9: Strutture e allocazione dinamica della memoria

Video Scrittura (MS Word) Lezione 1 Funzioni di base

Navigare in Internet Laboratorio di approfondimento la creazione di siti web e/o blog. Marco Torciani. (Seconda lezione) Unitre Pavia a.a.

Laboratorio di Algoritmi e Strutture Dati

Grammatica di base: Pointers

Gestione delle eccezioni in Java

Fondamenti di Programmazione

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Fondamenti di Informatica T. Linguaggio C: i puntatori

(1) - - (4) R4 = R7 * R7 (4) (2) (3) 5 - (4) rinviata perché in WAW con (3) 6 (3) e (4) ritirabili ma attendono il completamento di (2) (2) (3) (4)

Ministero della Salute

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA

Autodesk Map parte I digitalizzazione e importazione dati

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Specifiche tecniche per l interoperabilità tra i sistemi regionali di FSE

Manuale Sito Videotrend

Lezione 3 Progettazione di siti

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

SIST Sistema Informativo Sanitario Territoriale MANUALE DI INSTALLAZIONE DI CISCO ANYCONNECT SECURE MOBILITY CLIENT

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Java Native Interface Appunti

Algoritmi e Strutture Dati

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Introduzione al Linguaggio C

Indicazioni per lo svolgimento dell esercitazione di laboratorio

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

ALLEGATO: ISTRUZIONI PER L OPERATORE DI SEDE PER ACQUISIRE LE DOMANDE TELEMATICHE DI RICONGIUNZIONE

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Procedura operativa per la gestione della funzione di formazione classi prime

Università degli Studi di Udine. DLGS 196/03 Gestione delle credenziali di autenticazione informatica

Modem e rete locale (LAN) Guida per l'utente

Navigazione Tattica. L intercettazione

Files in C++ Fondamenti di Informatica. R. Basili. a.a

Транскрипт:

Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori in maniera esplicita con: array, funzioni, strutture.

Definizione Un puntatore è una variabile che contiene l'indirizzo di memoria di un'altra variabile L'indirizzo associato ad una variabile corrisponde a quello del primo byte; l'indirizzo associato ad un vettore corrisponde a quello del suo primo elemento. p è una variabile di tipo puntatore p=&x al puntatore p viene assegnato l indirizzo della variabile x *p denota la variabile puntata da p (cioè x) puntatore p variabile x p = = &x *p = = x

Operatori L'asterisco (*) viene chiamato operatore di indirezione o deferenziazione e restituisce il contenuto dell'oggetto puntato dal puntatore; l'operatore indirizzo (&) restituisce l'indirizzo della variabile da cui è seguito: puntatore = &variabile; i 2 operatori sono complementari: &*p coincide con p Esempio: x è una variabile memorizzata all indirizzo 138 e con valore 50; p è un puntatore alla variabile x e quindi contiene il suo indirizzo di memoria (138); &p =100 &x =138 138 50

Dichiarazione La dichiarazione di un puntatore è la seguente: <tipo_base> *<identificatore_var_puntatore> Il tipo base del puntatore serve per definire il tipo delle variabili a cui punterà il puntatore. int x=50; int *p; p=&x; // => *p=x=50

Qualche esempio int *p; /* dichiara p come un puntatore a int */ int x=1,y=2; (1) p= &x; /* assegna a p l'indirizzo di x */ (2) y=*p; /* assegna a y il contenuto di p */ (3) x=p /* assegna ad x il valore di p, cioè l'indirizzo del puntato da p */ (4) *p=3; /* assegna al contenuto di pointer il valore 3 */ la variabile x si trova nella locazione di memoria 100, y nella 200 e p nella 1000 p x y (1) fa si che pointer contenga il valore 100 (cioè l indirizzo di memoria di x). (2) fa si che y assuma valore 1 (il valore del puntato da p, cioè x). (3) fa si che x assuma valore 100 (cioè il valore di p). (4) assegna alla variabile puntata da p il valore 3 (quindi x=3).

Array L array è un puntatore ad un area di memoria pre-allocata, che contiene l indirizzo del primo elemento del vettore. Indicano tutti la stessa cosa v &v[0] α v+1 &v[1] α+1

Puntatori: 3 valori Quindi in merito ai puntatori possiamo avere tre possibili valori: int *pointer; pointer contenuto o valore della variabile puntatore (indirizzo della locazione di memoria a cui punta) &pointer indirizzo fisico della locazione di memoria del puntatore *pointer contenuto della locazione di memoria a cui punta NB Quando un puntatore viene dichiarato non punta a nulla: per poterlo utilizzare deve puntare a qualcosa! E' un errore comune non assegnare un indirizzo di memoria a un puntatore prima di usarlo e nessun compilatore lo segnala: Genera un errore Utilizzo corretto: int *ip; *ip=100; NO int *ip; int x; ip=&x; *ip=100;

Funzioni: passaggio per indirizzo Generalmente gli argomenti vengono passati alle funzioni per valore. Il passaggio per indirizzo si usa quando si devono mantenere le modifiche apportate alle variabili all interno delle funzioni. esempio: la funzione scambia (alfa, beta) che trasferisce il valore di alfa in beta e viceversa; in questo caso al termine della funzione (con return) i valori delle variabili alfa e beta non sono stati modificati. Come ottenere lo scambio effettivo del valore delle due variabili?. Si devono passare alla funzione, non i valori delle variabili, ma il loro indirizzo scambia (&alfa, &beta) #include <stdio.h> void scambia(int *apt, int *bpt); int main() { int alfa = 5; int beta = 13; printf("alfa = %d, beta = %d\n", alfa, beta); scambia(&alfa, &beta); void scambia(int *apt, int *bpt) { int temp; } temp = *apt; *apt = *bpt; *bpt = temp; } printf("alfa = %d, beta = %d\n", alfa, beta);

Strutture struct persona{ char nome[20]; int eta; } P1; P1.eta=30; Il puntatore a struttura accede ai campi dell elemento a cui punta attraverso il simbolo freccia (->) invece del punto (.) struct punto { int x, y; } elemento; struct punto *puntatore; puntatore = &elemento; puntatore->x = 6; // equivale a elemento.x=6 puntatore->y = 8;

Liste I puntatori si usano anche per creare liste semplici: si collegano due elementi, attraverso l inserimento di un campo aggiuntivo che rappresenta un puntatore ad una struttura delle stesso tipo (next): typedef struct { int valore; //informazione da memorizzare in ogni elemento ELEMENTO *next; //campo aggiuntivo di collegamento } ELEMENTO; ELEMENTO el1, el2; // in questo modo l elemento successivo di el1 diventa el2 el1.next = &el2;