| | | OFFLINE | | Post: 257 Post: 246 | Registrato il: 02/03/2016 Registrato il: 03/03/2016 | Sesso: Maschile | |
|
11/05/2016 16:04 | |
Il C non ha delle vere e proprio set per scrivere le parole , essi si rappresentano con le stringhe ovvero con l’ Array monodimensionali il suo costrutto è semplicemente :
char nome [8]= “scatola” ;
Come nell’ Array monodimensionale possiamo non inserire il numero di caratteri da usare ma è da considerare sempre un carattere in più di quello che abbiamo, questo carattere lo mette in automatico il compilatore e è un carattere nullo \0 che dice al compilatore dove finisce la stringa , come sempre l’ array parte sempre da 0 fino all’ ultimo carattere dove trova la chiusura della stringa \0
Altro modo di inserire o inizializzare una stringa di caratteri può essere come si fa con l’ array dei numeri ovvero :
char nome [] = {‘s’,’c’,’a’,’t’,’o’,’l’,’a’,’\0’} ;
forse è più comodo usare come su , anche qui se inizializzato l’ array di stringhe non serve inserire dentro [] il numero come per le matrici ,anche qui come per l’ array normale si inizia a contare da 0, 1, 2, ecc
La stringa viene richiamata dal carattere %s , pertanto sulla funzione scanf e printf si inserisce la dicitura %s in scanf non serve più inserire il simbolo & che è il richiamo del puntatore pertanto scriveremo :
scanf(“%s”, nome_stringa );
Nel Compilatore C abbiamo una libreria chiamata <string.h> che dobbiamo includere , questa libreria ci offre delle funzioni per lavorare su questi array di stringhe vediamo quelle più usate :
STRCPY serve per copiare una stringa in un’altra
STRCAT concatena 2 stringhe
STRCMP confronta 2 stringhe
STRCHR cerca un carattere in una stringa
STRSTR cerca una stringa in un'altra stringa
STRLEN ci restituisce la lunghezza della stringa
Per altre funzione e non solo per <STRING> ma per tutti i file header (*.h) del C si può vedere in Wikibooks
https://it.wikibooks.org/wiki/C/Appendice/Librerie_standard
Il puntatore è l’ indirizzo fisico di una variabile puntata esempio abbiamo moltissime scatole che sono le nostre variabili queste scatole sono riposte nei scaffali i scaffali sono la memoria del Pc, noi con il puntatore troviamo subito la nostra variabile che usiamo , ovvero troviamo subito quella scatola riposto in quella fila di quel scaffale numerato sequenzialmente , come le variabili o l’array prima dobbiamo dire che tipo di puntatore abbiamo che va in base alla variabile che dobbiamo leggere allora prima vediamo che tipo è int , double , float, char, trovato questo mettiamo il nome ecco il puntatore viene creato con l’ asterisco (*) allora abbiamo p=puntatore int , questo puntatore poi deve leggere una variabile int , inizializzo anche la variabile var = 5 che poi leggeremo ;
int p* ,var= 5;
ora il nostro puntatore p deve leggere la nostra variabile var che è inizializzata a 5 (var= 5) per fare ciò :
p = &var ;
Ora il puntatore p va dalla variabile var e legge in quale posizione è inserita la variabile var dentro il nostro magazzino , se noi leggiamo il puntatore p e la variabile &var ci restituisce la posizione, se invece leggo *p e var mi restituisce il valore 5, la memoria che usiamo del Pc di solito è in formato sequenziale di posizioni e ogni variabile viene scritta in una parte libera della nostra memoria non è detto che per forza 2 nostre variabili siano inserite vicine sequenzialmente
L’ operatore & (e commerciale) è l’ operatore dell’ indirizzo legge l’ indirizzo o la posizione dentro la nostra memoria che utilizziamo, questo si applica solo ad contenuti che già esiste in memoria esempio alle variabili esistenti, una variabile non inizializzata (var = 5) può dare numeri a caso
L’ operatore * (asterisco) questo è l’operatore che legge il valore reale della variabile che leggiamo ovvero *p ci produce 5 questo operatore si chiama de referenziare dall’ inglese (dereferencing) , se noi facciamo ( *p = 8 ; ) , ecco che la variabile var in lettura cambia il suo valore e diventa 8 perché noi alla posizione della variabile var abbiamo cambiato il suo contenuto tramite il puntatore *p
Questi puntatori possiamo usarli anche con l’ array [] sia che essi sia stringhe che sia numerici basta far riferimento i suoi indici per leggere l’ indirizzo di :
main () { char sc[]=”scatola”; int x; sc[7] = &x;
printf (“ L’indirizzo di sc[7] e’ -> %d “,&x);
system(“pause”); }
Sembra che l’ array e il puntatore siano diversi effettivamente nel C sono identici ma utilizzati diversamente il vettore o array quando vengono creati si crea un puntatore nella memoria che usiamo e si riserva tanto spazio per quanto è grande l’ array secondo il tipo e la grandezza ecco 2 scritture uguali, abbiamo v vettore :
main (){ int v[]= {53,45,78};
printf(“leggiamo il secondo elemento del vettore : %d\n ”,v[1]);
printf(“leggiamo il secondo elemento del vettore : %d\n ”,*(v+1));
Passaggio dei puntatori verso le funzioni, abbiamo visto che è possibile lavorare con le funzioni il C ci permette di lavorare direttamente sulle funzione non elaborando i dati copia che sono volatili, ovvero che si cancellano appena chiusa la funzione , ma lavorando proprio con i puntatori lavorare proprio con l’ indirizzo fisici reali delle vere variabili alla fine è meglio lavorare sulle funzioni con i stessi puntatori o array
Comunque non andiamo dentro oltre perché poi con il C++ non si usa più ,tanto poi vedremo altro diversamente
Prossimamente vedremo altri tipi di dati definiti da noi sempre qui in C
Ciao grazie ByMpt-Zorobabele Di questo testo dalla prefazione fino all’ 12° capitolo scritto, ho creato un testo PDF da scaricare lo trovate insieme dove rimane l’ elenco delle foto e ogni volta sarà aggiornato con i nuovi testi
|