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 per la programmazione C
Accedi
14) Ancora puntatori, typedef, var. automatiche e statiche, malloc, free
Messaggi
OFF
LINE
JehovaZorobabele
Post: 257
Post: 246
Registrato il: 02/03/2016
Registrato il: 03/03/2016
Sesso: Maschile
0
0
23/05/2016
17:04
Parliamo di Malloc , delle variabili statiche e automatiche , parliamo di puntatori
Parliamo ancora del puntatore perché dopo i
grandi dati che immagazziniamo grazie i record che sono le strutture che
abbiamo visto nel capitolo precedente, ci può essere d’ aiuto i puntatori e la
funzione
mallo
c non
per ripetermi rivediamo i puntatori in breve il puntatore si costruisce come le
variabili ma deve avere l’ asterisco (
*
) prima del suo nome ecco la sua sintassi (
p=
puntatore
) :
tipo_elemento
*nome_puntatore ;
int *p;
abbiamo creato il puntatore
p
, ora dobbiamo dargli la vera
variabile che deve leggere logicamente deve essere dello stesso tipo intera nel
nostro caso per assegnare una variabile al nostro puntatore
p
basta inserire la e-commerciale (
&
) prima della variabile (
v= variabile
):
p=
&v;
abbiamo
assegnato al puntatore p
la variabile
v
se io scrivo
*p = 12;
,
ecco che la variabile
v
prende il valore di
12
perché come si era detto in precedenza, (nel capitolo 12
dei puntatori) il puntatore legge l’
indirizzo esatto di dove risiede la variabile dentro il disco nostro caso la variabile
v
, questo
indirizzo lo legge grazie all’ operatore dell’
indirizzo &
, stesso
&
che usiamo con la funzione
scanf
proprio per dargli un indirizzo di memoria e come detto il
puntatore *p
è lo specchio o alias di questo indirizzo , pertanto possiamo operare
sulla variabile
v
direttamente o indirettamente tramite il suo
puntatore p
un esempio, inserisco il tutto su una riga per comodità testuale del
forum se abbiamo :
int a = 8, v, *p ;
p = &v; *p = 2;
*p = *p * a;
// il risultato del printf è : 16 e 16
printf("puntatore
=[%d] variabile
=[%d]\nByMpt-Zorobabele\n ", *p, v);
Nel capitolo 13 abbiamo parlato di typedef
che serve per dichiarare variabili e tipi dati non primitivi , i tipi primitivi
sono le semplici variabili …
Già l’ array e tutto quello che possiamo
costruire con typedef come le strutture
struct e le unioni union questi sono tipi dati non primitivi, con typedef possiamo creare anche nuovi puntatori la
soluzione è la stessa che avevamo visto
che si divide in 2 parti parte 1 la vera dichiarazione , parte 2 il
cambio del nome o dei nomi se dobbiamo creare più variabili uguali sintassi per i puntatori:
typedef tipo_elemento *nome_elemento;
n
ome_elemento nuovo_nome;
esempio :
typedef int
*puntatore;
puntatore p;
Ora il nostro nuovo puntatore
p
è operabile rivediamo il programmino di
prima ma ora usiamo il nuovo dato
p
del nuovo puntatore di typedef come vedete cambia solo la
dichiarazione del puntatore :
typedef
int *puntatore;
puntatore p;
int a = 8, v;
p = &v;
*p = 2;
*p = *p * a;
printf("puntatore
=[%d] variabile
=[%d]\nByMpt-Zorobabele\n ", *p, v);
Fino ad ora abbiamo visto solo le
variabili automatiche
il suo
tempo di vita di queste variabili è
effettuato automaticamente dal sistema centrale
se sono inserite prima del
main sono globali
sotto il main sono
locali
, se sono
dentro le varie funzioni o blocchi {} sono solo locali per
quelle funzioni blocchi
quando si esce
dalla funzione o blocco quella variabile viene cancellata
Ora parliamo delle
variabili dinamiche
, queste variabili siamo noi che le
allochiamo
con
malloc
e le de
allochiamo con
free
da dentro la memoria centrale chiamata
heap
( heap =mucchio) , queste
variabili non hanno un identificatore o nome ma possono essere attribuite per
mezzo del loro indirizzo attraverso i puntatori , questi comandi
malloc e free
sono
usabili tramite la libreria che dobbiamo inserire con #include<
stdlib.h
> la stessa libreria
che riconosce il comando system
, la sintassi di
malloc
(memory
allocation ) [
p=
puntat
ore] :
nome_puntatore
= (tipo_puntatore *) malloc (sizeof (tipo_puntatore));
dove nome_puntatore è il nome
p
, tipo_puntatore è il tipo della variabile puntata
int,double,float ecc… sizeof(t_p)
calcola il numero di bit o byte che occupa il
tipo puntatore se è int occupa 2 byte, un float o int long 4 , un
double 8 byte vediamo un esempio di
allocazione di memoria su variabili primitive vedi il file prova 2 allegato dentro il forum
http://im4.freeforumzone.it/up/49/24/944423184.txt
Ciao
grazie ByMpt-Zorobabele
Di questo testo dalla prefazione fino all’ 14°
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
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
Visualizza l'intera discussione
1
5
MediaObject
1,00
11
1
Tag discussione
puntatori
typedef
malloc
free
variabili statiche
variabili automatiche
programmazione c
c programmazione
bympt-zorobabele
Registrati
Accedi
INDICE, Appunti per la 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