Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Puntatori, Liste e File in C++, Appunti di Informatica

Una panoramica sui puntatori e le liste in C++, spiegando come dichiarare un puntatore, accedere ai campi di una struttura, gestire dinamicamente la memoria, definire un nodo e creare una lista. Inoltre, viene introdotta la gestione dei file in C++, mostrando come aprire un file di input e output. Il testo è utile per chi vuole approfondire la programmazione in C++ e imparare a gestire la memoria dinamica e i file.

Tipologia: Appunti

2022/2023

In vendita dal 06/10/2023

cristiana-lucatelli
cristiana-lucatelli 🇮🇹

4.3

(13)

104 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Puntatori e Liste
Un puntatore è una variabile che punta ad un altra, ovvero il valore del puntatore è l’indirizzo
di memoria di un’altra variabile.
un puntatore si dichiara così:
<tipo> *<nome>;
quindi:
&p -> indirizzo del puntatore
p -> contenuto del puntatore, quindi l’indirizzo della variabile puntata
*p-> contenuto della variabile puntata dal puntatore
Di default un puntatore occupa 4 byte.
Una struct è una struttura dati che presenta all’interno dei campi connessi logicamente tra di
loro. Dichiarare una struct è come dichiarare un nuovo tipo di dati.
per accedere ad un campo della struttura facciamo
<nome variabile>.<campo>
nel caso in cui la variabile creata fosse un puntatore accediamo ai vari campi cosi: <nome
puntatore>-><campo>
gestione dinamica della memoria
L’istruzione malloc permette l’allocazione di una parte della memoria, in input prende il
numero di byte da allocare, mentre in output restituisce un puntatore all’area di memoria
allocata.
int *p;
p= (int*)malloc(30);
(int*) -> cast -> dice al puntatore come organizzare i byte
L'istruzione free permette invece di liberare lo spazio precedentemente allocato dalla malloc.
mettendo insieme puntatori e strutture possiamo arrivare a definire un nodo. Il nodo non è
nient’altro che una variabile di tipo nodo, ovvero di una struttura che presenta una serie di
caratteristiche.
la struttura del nodo è composta sempre da una parte di dati e un campo puntatore.
mettendo più nodi insieme, collegati proprio dal campo puntatore, possiamo creare una
struttura dinamica, che si differenzia rispetto all’array dal fatto che non presenta celle
contigue e quindi qui non possiamo applicare l’aritmetica dei puntatori.
la lista è composta da una serie di nodi, dove l’ultimo punta a null, mentre il primo e quelli
intermedi puntano al nodo successivo.
Per accedere alla lista è quindi necessario conoscere l’indirizzo di memoria del primo nodo,
ovvero quello in testa.
File
Per lavorare con i file è necessario includere una nuova libreria: #include <fstream>
Solitamente possiamo aprire due tipi di file, uno di input, da cui prendiamo le informazioni, e
uno di output, che ci crea un nuovo file di testo dove visualizziamo il risultato.
pf2

Anteprima parziale del testo

Scarica Puntatori, Liste e File in C++ e più Appunti in PDF di Informatica solo su Docsity!

Puntatori e Liste

Un puntatore è una variabile che punta ad un altra, ovvero il valore del puntatore è l’indirizzo di memoria di un’altra variabile. un puntatore si dichiara così: *; quindi: &p -> indirizzo del puntatore p -> contenuto del puntatore, quindi l’indirizzo della variabile puntata p-> contenuto della variabile puntata dal puntatore Di default un puntatore occupa 4 byte. Una struct è una struttura dati che presenta all’interno dei campi connessi logicamente tra di loro. Dichiarare una struct è come dichiarare un nuovo tipo di dati. per accedere ad un campo della struttura facciamo . nel caso in cui la variabile creata fosse un puntatore accediamo ai vari campi cosi: -> gestione dinamica della memoria L’istruzione malloc permette l’allocazione di una parte della memoria, in input prende il numero di byte da allocare, mentre in output restituisce un puntatore all’area di memoria allocata. int p; p= (int)malloc(30); (int) -> cast -> dice al puntatore come organizzare i byte L'istruzione free permette invece di liberare lo spazio precedentemente allocato dalla malloc. mettendo insieme puntatori e strutture possiamo arrivare a definire un nodo. Il nodo non è nient’altro che una variabile di tipo nodo, ovvero di una struttura che presenta una serie di caratteristiche. la struttura del nodo è composta sempre da una parte di dati e un campo puntatore. mettendo più nodi insieme, collegati proprio dal campo puntatore, possiamo creare una struttura dinamica, che si differenzia rispetto all’array dal fatto che non presenta celle contigue e quindi qui non possiamo applicare l’aritmetica dei puntatori. la lista è composta da una serie di nodi, dove l’ultimo punta a null, mentre il primo e quelli intermedi puntano al nodo successivo. Per accedere alla lista è quindi necessario conoscere l’indirizzo di memoria del primo nodo, ovvero quello in testa.

File

Per lavorare con i file è necessario includere una nuova libreria: #include Solitamente possiamo aprire due tipi di file, uno di input, da cui prendiamo le informazioni, e uno di output, che ci crea un nuovo file di testo dove visualizziamo il risultato.

La dichiarazione di un file di input è la seguente: ifstream filein. Questa viene sempre seguita dall’apertura del file e da un if che ne controlla la corretta apertura: filein.open (“nome_del_file.txt”, ios::in); if (filein.is_open()==0) return -1: Per prendere tutte le righe del file di input bisogna inserire la getline (il metodo che permette di prendere una riga per volta salvandola su una variabile stringa) in un ciclo iterativo: while (!filein.eof()) getline(filein, myfile); Un record a lunghezza fissa è un record in cui ogni campo ha una lunghezza fissa. Una volta estratto tutto il record da un file e messo in una stringa è possibile estrapolare i vari campi tramite l’operazione substring, estraendo il numero di caratteri pari al numero dei byte da cui è composto un campo. Ricorda che i parametri della substring sono due, il primo indica da dove partire, mentre il secondo indica quanti bytes prendere.