|
tecnica |
ARRAY E STRINGHE - Inizializzazione di un array - Occupazione in memoria
ARRAY E STRINGHE
Gli
array
O
In C si definisce vettore (array)
un insieme di variabili dello stesso tipo memorizzate consecutivamente.
O
Gli array permettono la gestione di grandi moli di dati correlati tra
di loro e dello stesso tipo.
O
Ogni singola variabile dell`array è denominata elemento e vi si accede tramite un indice che varia tra 0 e il numero degli elementi-l
Dichiarazione
di un array
O
La dichiarazione di un array generico è del tipo:
Tipo Nome_array[Numero elementi];
O
Ad esempio:
#define GIORNI 7
double temperature[GIORNI];
Accesso
ai singoli elementi
O
L`accesso ai singoli elementi avviene tramite un indice intero:
O
primo elemento:
temperature[0];
O
terzo elemento:
temperature[2];
O
ultimo elemento:
temperature[GIORNI-l];
Inizializzazione
di un array
O
L`inizializzazione di un array può avvenire sia in fase di
dichiarazione che successivamente:
char nome[8]=;
nome[0]='P';
O
Nel primo caso gli elementi successivi sono inizializzati a 0:
nome[5]==0 true
Occupazione
in memoria
O
I singoli elementi di un array (monodimensionale) sono memorizzati
consecutivamente in memoria:
int A[100]=;
O
L`accesso ad un elemento avviene come: A+indice
PERICOLO!
limiti di un array
O
A differenza di molti altri linguaggi il C non effettua controlli sulla
correttezza dell'Indice!
int dummy[100];
dummy[100]=7;
dummy[-l]=0;
O
Le ultime due righe sono un esempio di buffer overrun e possono portare a:
O
malfunzionamento del
programma
O
malfunzionamento del
sistema operativo
Occupazione
in memoria
O
È possibile la definizione di array a piú dimensioni:
int A[2][3]=;
int A[2][3]={,};
O
Lo standard ANSI non pone limiti al numero di dimensioni sebbene alcuni
compilatori possano prevederne
long b[2][3][7][12][1024];
char Sbagliato[23,67,89];
Omissione
delle dimensioni
Quando l'inizializzazione di un array coincide con la sua dichiarazione
si possono omettere le dimensioni (una sola):
long TreElementi[]=;
short MatriceDuePerDue[][2]=;
double ErroreInCompilazione[][]=;
Passaggio
a funzioni
O
Il passaggio di array a funzioni avviene per indirizzo:
int a[100], b[10][20]; // array di interi
void MiaFunc(int k[]); // funzione che prende come argomento
un array di interi
void MiaFunc(int *k); // equivalente alla precedente
MiaFunc(a); // invocazione
void AltraFunc(int j[][20]);
Le
stringhe
O
Uno dei più comuni utilizzi di un array è la gestione di stringhe.
O
Per stringa si definisce un array di char
terminato dal carattere nullo ' '.
char LaMiaPrimaStringa[4]=''abc'';
char LaMiaSecondaStringa[]=''def'';
char NonStringa[]=;
char StoLargo[100]=''jklmnop'';
La
libreria string.h
O
Il C fornisce numerose funzioni per la manipolazione delle stringhe:
#include<string.h>
O
Il C++ estende le capacità del C mediante la classe stringa
#include<string>
string s1; // forse a fine corso?
string.h
O
Tutte le funzioni elencate si basano sull'esistenza del carattere nullo
('0') di terminazione.
O
L'utilizzo delle doppie virgolette ``''
implica l'aggiunta del carattere nullo.
O
L'assenza del '0' implica
malfunzionamenti:
O
errori in lettura stringa;
O
errori in scrittura stringa;
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta