Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni

Array- Struct, Stringhe, Puntatori

Il documento descrive la dichiarazione e l'uso di array di strutture, stringhe e puntatori in C. Viene spiegato come allocare dinamicamente memoria per un array di strutture usando 'malloc', come dichiarare e accedere a stringhe e array di puntatori, e l'importanza della gestione della memoria. Infine, viene fornito un esempio pratico di utilizzo di un array di puntatori per gestire dati dinamici.

Caricato da

ipiccolo94.ip
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni

Array- Struct, Stringhe, Puntatori

Il documento descrive la dichiarazione e l'uso di array di strutture, stringhe e puntatori in C. Viene spiegato come allocare dinamicamente memoria per un array di strutture usando 'malloc', come dichiarare e accedere a stringhe e array di puntatori, e l'importanza della gestione della memoria. Infine, viene fornito un esempio pratico di utilizzo di un array di puntatori per gestire dati dinamici.

Caricato da

ipiccolo94.ip
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 2

ARRAY DI STRUCT

1) DICHIARAZIONE DI UN TIPO TInfo


typedef struct {
char targa[8];
bool attiva;
} TInfo;
2) CREAZIONE DELL’ARRAY DI STRUCT attraverso la funzione “malloc”
La memoria può essere allocata dinamicamente, dobbiamo ricordarci che la funzione “malloc” restituisce un
puntatore di tipo void. Definiamo allora una variabile strutturata di tipo TInfo, per esempio TInfo TARGA.
TInfo *p=(TInfo*)(malloc(sizeof(TInfo)*dim)  dove dim è al dimensione fisica dell’array di struct.
Il puntatore segna l’indirizzo di memoria del primo byte allocato, perciò a partire da esso possiamo accedere
a tutto il resto dei byte, quindi delle posizioni del vettore allocato. Possiamo allora scrivere p[i].
“L’operatore di indicizzazione [ ] permette di accedere agli elementi dell'array a cui il puntatore fa
riferimento”
3) ASSEGNAZIONE DEI VALORI AI CAMPI DELLE STRUCT
p[3].targa=ad000cd  accesso al campo targa dell’elemento 3 dell’array
p[3].attiva=true  accesso al campo attiva dell’elemento 3 dell’array

ARRAY DI STRINGHE

1) COSA SONO LE STRINGHE – sequenza di caratteri immagazzinati in una regione di


memoria contigua, la fine viene segnata dal byte nullo di terminazione \0.

2) CREAZIONE DELL’ARRAY Dichiarando un array di char usando la notazione [], creiamo un


array bidimensionale: la prima dimensione limita il numero di stringhe che si possono inserire
nell’array, la seconda dimensione limiterà la lunghezza massima della stringa.

3) ACCESSO AGLI ELEMENTI

v[i]  singola stringa

v[i][j] singolo elemento di indice j appartenente alla stringa di indice i

ARRAY DI PUNTATORI
1) COSA SONO Gli array di puntatori in C sono strutture dati che contengono un insieme di puntatori. Ogni
elemento dell'array è un puntatore a un oggetto di un tipo specifico, come un int, un char, una struttura o
persino un altro puntatore. Gli array di puntatori sono utili in molte situazioni, in particolare quando si
desidera gestire un insieme di dati o oggetti, ciascuno dei quali può essere di dimensioni diverse o di tipi
diversi.
2) DICHIARAZIONE
int* Array[5]; // Dichiarazione di un array di puntatori a int con 5 elementi
char* strings[3]; // Dichiarazione di un array di puntatori a stringhe (array di caratteri)
3) ASSEGNAZIONE DEI PUNTATORI Puoi assegnare ai puntatori gli indirizzi di variabili o oggetti
appropriati.
int x = 10, y = 20, z = 30;
int* intArray[3] = {&x, &y, &z};

char str1[] = "Hello";


char str2[] = "World";
char* strings[2] = {str1, str2};

4) ACCESSO AI DATI ATTRAVERSO I PUNTATORI Puoi accedere ai dati referenziati dai puntatori
utilizzando l'operatore di dereferenziazione `*`.
printf("%d\n", *intArray[0]); // Stampa il valore referenziato dal primo puntatore
printf("%s\n", strings[1]); // Stampa la seconda stringa

ESEMPIO

#include <stdio.h>
main(){
int *a[20]; //dichiariamo un array di 20 elementi
int x;
x=8; //assegniamo il valore 8
a[5]=&x; //assegniamo l'indirizzo della variabile x
printf("%d\n", *a[5]); //visualizziamo il valore di x
return 0;
}

Gli array di puntatori sono spesso utilizzati per gestire una raccolta dinamica di dati, come array di stringhe
di lunghezze diverse, strutture di dimensioni diverse o altre strutture dati complesse. Possono essere utili
anche per semplificare l'accesso a dati multidimensionali o per implementare matrici dinamiche.

Tieni presente che, quando utilizzi array di puntatori, è importante gestire attentamente la memoria, in
particolare l'allocazione e la deallocazione dinamica, per evitare perdite di memoria o accessi non validi.

Potrebbero piacerti anche