feed
top
crea forum
cerca
feed
forum
supporto
discussione
cerca
JEHOVA e la NUOVA GERUSALEMME > INIZIO <
Blog libero tutti possono commentare nella zona chiacchiere tutti possono dire la sua , la CHAT è libera tutti possono usarla
Cerca
INDICE Appunti sulla programmazione C++
Accedi
04) riscopriamo i puntatori e i vettori (array)
Messaggi
OFF
LINE
JehovaZorobabele
Post: 257
Post: 246
Registrato il: 02/03/2016
Registrato il: 03/03/2016
Sesso: Maschile
0
0
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 si
avvia il programma, ecco tutti gli indirizzi prodotti dal mio programma come
vedete 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
163
8048
indirizzo di locale2
163
8036
indirizzo della funzione() 10818401
indirizzo di globale1
108
58496
indirizzo di globale2
108
58500
indirizzo di af1 1
63
7812
indirizzo di af2
163
7800
indirizzo di af3
163
7788
indirizzo di con
163
7252
<< 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
con
typedef 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 per
tante 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 , con
il puntatore possiamo usarlo solo contro il primo
a[0]
e non possiamo dare dei valori per
mezzo 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] passa
al prossimo a[1]
per lavorare al meglio dentro i vettori è consigliabile usare il
for
e il suo
indice 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.aspx
Anche qui di queste discussioni che inserisco faccio un testo PDF da poter
scaricare tutto il mio materiale è da utilizzare come desiderate per il testo PDF vedi cartella
dedicata , ogni volta cambia ubicazione del testo allora cambio il file e
lo 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
]
1
5
MediaObject
4,33
13
1
Tag discussione
vettori
puntatori
array
testo pdf
programmare cpp
bympt-zorobabele
cpp programmazione
appunti c-cpp
comando for
vettore e string cpp
Registrati
Accedi
INDICE Appunti sulla programmazione C++
Accedi
IL MIO PROFILO
LE MIE DISCUSSIONI
FORUM CHE SEGUI
LA MIA FORUM-CARD
MODIFICA FORUM-CARD
FAQ
TRADUCI
LOGOUT
Accedi
Registrati
FAQ
TRADUCI
Scatta o carica foto
Allega file
Inserisci link da url (card)
Incorpora url (YouTube/Twitter/...)
ACCETTA
RIFIUTA
Anteprima