ePerTutti


Appunti, Tesina di, appunto tecnica

ARRAY E STRINGHE - Inizializzazione di un array - Occupazione in memoria



ricerca 1
ricerca 2

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;







Privacy

© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta