| | | OFFLINE | | Post: 257 Post: 246 | Registrato il: 02/03/2016 Registrato il: 03/03/2016 | Sesso: Maschile | |
|
17/06/2016 10:48 | |
Vettori Array puntatori vediamoli in grandi linee in C++ sono diversi dal uso che si faceva in C I puntatori legge il contenuto dentro un indirizzo della memoria il puntatore è dichiarato con il * e deve avere la sua variabile o costante da leggere, tramite il simbolo & int* PT = &variabile il puntatore PT non legge la variabile per se stessa ma legge l’ indirizzo dove la variabile risiede dentro la nostra memoria del computer ecco un programma://prova puntatori :#include<iostream>using namespace std;//inserisco una funzione e 2 variabili qui area globale int globale1 = 10 , globale2 = 8; void funzione () { // funzione con 3 variabili e 1 costante int af1 = 2 , af2= 3 , af3; af3 = af1 + af2; //somma delle variabili const int con = 10; // dichiarazione della costante cout << "\n indirizzo di af1 "<< ( long ) &af1 <<"\n indirizzo di af2"<< ( long) &af2 <<"\n indirizzo di af3"<<( long) &af3 <<endl; cout <<"\n indirizzo di con"<<( long) &con <<endl; // indirizzo della costante cout <<"\n totale di af1+af2 = af3 :"<<af3 <<endl; }int main () { //inserisco 2 variabili locali int locale1 = 10, locale2 = 60; cout <<"\n indirizzo di locale1 "<<(long) &locale1 << "\n indirizzo di locale2 " <<( long ) &locale2 <<endl; cout <<" indirizzo della funzione() " <<( long) &funzione <<endl; cout <<"\n indirizzo di globale1 "<<( long) &globale1 <<"\n indirizzo di globale2 " <<( long) &globale2; funzione (); system ( "pause"); } Ecco il mio risultato che può cambiare da computer a computer e ad ogni volta che siavvia il programma, ecco tutti gli indirizzi prodotti dal mio programma comevedete la funzione e le variabili globali 1 e 2 hanno un numero all’ altezza dei 108…. Mentre l’indirizzi di af1-2-3 a_funzione_1 -2-3 ha altri indirizzi come le locali1-2 163 nonostante af1-2-3 sia menzionate nell’ area globale dentro la funzione stessa questo vuol dire che sono memorizzate quando vengono usate se vedete la differenza tra un indirizzo e l’ altro c’è 12 il mio computer usa 12 byte per ogni variabile int : indirizzo di locale1 1638048 indirizzo di locale2 1638036 indirizzo della funzione() 10818401 indirizzo di globale1 10858496 indirizzo di globale2 10858500 indirizzo di af1 1637812 indirizzo di af2 1637800 indirizzo di af3 1637788 indirizzo di con 1637252 << indirizzo della costante totale di af1+af2 = af3 :5 Premere un tasto per continuare . . . Quando noi inseriamo la e commerciale & andiamo a leggere l’ indirizzo della variabile , quando usiamo il puntatore * leggiamo il valore della variabile che abbiamo all’ indirizzo &, se noi dichiariamo ( int * a,b,c; ) solo a è il puntatore l’ altre sono solo semplici variabili b,c contypedef potremo fare diversamente per dichiarare più puntatori in un solo colpo ora bisogna farlo uno ad uno I puntatori possono essere utilizzati in tutti i formati delle variabili non solo int ma anche char , long float ecc… Come la variabile e la costante viene inizializzata float f = 10.34 ; anche il puntatore va subito inizializzato dicendogli quale variabile deve essere collegata o puntata possibilmente dobbiamo far rappresentare anche il nome che punta e capire subito che è un puntatore ognuno può usare un suo sistema ptf puntatore pf variabile f oppure Fp che è più visibile se dobbiamo inizializzare il puntatore per la variabile f : float* Fp = &f ; ora noi sappiamo che Fp guarda nell’ indirizzo della variabile f Ora posso usare il puntatore, un uso che potrei fare è sostituire il valore della variabile stessa che vedo *Fp = 34.10 ; ora il valore della variabile f non è più 10.34 ma 34.10 potevamo certamente sostituire il valore di f direttamente con f= 34.10; ma lo scopo di usare i puntatori è proprio per quelle situazioni in cui non è possibile sostituire o vedere il valore diretto di una variabile dentro le funzioni o vettori Il puntatore è il punto di partenza dei vettori array come visto su la memoria di un computer è fatta in indirizzi noi possiamo prendere queste suddivisioni di indirizzi e possiamo unificarli pertante variabili unite da un unico nome ma differenziate da spazi unici il modo di far questo è l’ array o vettore int a[5] ; dice che ho un array da 5 posizioni cosi si crea una memoria 5 variabili distinte ma con un solo nome ‘a’ e posso inserire 5 variabili di tipo intero, un array o vettore inizia con la posizione a[0]a[1]a[2]a[3]a[4] in ogni spazio posso inserire un valore a[0] = 10; a[4]= 1; a[1]= 125055; ecc… dipende dal tipo di vettore che abbiamo inizializzato se è string possiamo inserire le parole vere non più come caratteri come era nel C L’ array o vettore non è una normale variabile se viene usato il puntatore , conil puntatore possiamo usarlo solo contro il primo a[0] e non possiamo dare dei valori permezzo del puntatore come si faceva su int * Ap = &a; *Ap = 23; questo lavoro non è ammesso Quando un puntatore punta verso un array non serve inserire la & perché il puntatore già legge il suo indirizzo fisico nei puntatori possiamo usare per muoverci il ++ cosi si sposta da una posizione all’ altra dentro lo stesso array o vettore pertanto Ap++ dal leggere a[0] passaal prossimo a[1] per lavorare al meglio dentro i vettori è consigliabile usare il for e il suoindice inserito dentro il numero dei vettori un esempio per leggere dentro il vettore a [5] :for (int i=0; i< 5; i++) cout << " a = [ "<< i <<"] = " << a[ i ] <<endl; dove il contatore i stampa il numero dell’ array da 0-4 a[0] mentre l’ altro a stampa il valore che è scritto dentro il vettore 10 abbiamo a [0] = 10 per proseguire a [1] = 125055 ecc… fino alla fine a [4] = 1 possiamo fare ugualmente per inserire i dati quando abbiamo vettori con moltissimi indici introducendo sotto al cout un cin >> a esempio :for (int i=0; i< 15; i++) cout << " inserisci il valore in a = [ "<< i <<"] = " <<endl; cin >> a ; Man mano che il for gira ti chiede di inserire i valori dentro i rispettivi 15 indici In C abbiamo appreso che ogni vettore costruiva una stringa ora in C++ tutto cambia , ogni posizione possiamo scrivere una stringa e non un carattere per far riconoscere le stringhe bisogna includere il file #include<string> Sia i vettori che i puntatori il C++ li usa diversamente dal C , cosi li vedremo meglio all’ occorrenza nei prossimi capitoli
Ciao grazie da ByMpt-Zorobabele Testo PDF aggiornato con questo ultimo capitolo inserito lo trovate :http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspxAnche qui di queste discussioni che inserisco faccio un testo PDF da poterscaricare tutto il mio materiale è da utilizzare come desiderate per il testo PDF vedi cartelladedicata , ogni volta cambia ubicazione del testo allora cambio il file elo inserisco sempre dentro la stessa cartella < file aggiornato ad oggi >http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx[Modificato da JehovaZorobabele 17/06/2016 11:19] |