Vai al contenuto

I puntatori, devo fare chiarezza


Messaggi raccomandati

I puntatori...ho capito cosa sono, ma non ho capito come funzionano.Contegono l'indirizzo della variabile.Ok ci sono però...

A)

int *ciccio;

x=5;

ciccio=&x

NSLog(ciccio);

così stampa 5, perché nel puntatore c'è memorizzato l'indirizzo della variabile X.

:D

int x

int *ciccio;

ciccio = x

NSLog(ciccio)

così cosa stamparebbe?

Sempre 5 giusto?

C)

Fin qui mi pare tutto abbastanza semplice.

Ora

NSMutableArray *foo;

foo = [NSMutableArray alloc];

dichiara un puntatore foo di tipo NSMutableArray, e poi???indica la posizione al puntatore??

D)

NSImage *myImage;

myImage = [[NSImage alloc] init];

Per inizializzare cosa si intende?che significa?

E)

Perché devo usare i puntatori?In che situazioni?Quando si usano?Ho capito che puntano ad un indirizzo.Ma fare

int*ciccio;

ciccio=5;

NSLog(ciccio);

Mi pare più semplice

int ciccio=5;

NSLog(ciccio);

Senza puntatore.

Per cui vi chiedo QUANDO e PERCHÉ usare un puntatore.

VI ringrazio se qualcuno di voi vorrà rispondere.

Week end? Gita? Vacanza? Leggi la nostra esperienza: Go2Go.eu

Link al commento
Condividi su altri siti

I puntatori...ho capito cosa sono, ma non ho capito come funzionano.Contegono l'indirizzo della variabile.Ok ci sono però...

A)

int *ciccio;

x=5;

ciccio=&x

NSLog(ciccio);

così stampa 5, perché nel puntatore c'è memorizzato l'indirizzo della variabile X.

Esatto

:D

int x

int *ciccio;

ciccio = x

NSLog(ciccio)

così cosa stamparebbe?

Sempre 5 giusto?

Prima di tutto dovresti scrivre x=5;

in ogni caso no, ciccio dovrebbe prendere come valore 5 e quindi stampare il contenuto della cella di memoria numero 5 ossia qualcosa più o meno casuale...

C)

Fin qui mi pare tutto abbastanza semplice.

Ora

NSMutableArray *foo;

foo = [NSMutableArray alloc];

dichiara un puntatore foo di tipo NSMutableArray, e poi???indica la posizione al puntatore??

E poi se usi foo[n] punti all'ennesimo elemento dell'array

D)

NSImage *myImage;

myImage = [[NSImage alloc] init];

Per inizializzare cosa si intende?che significa?

Inizializzare significa creare la variabile e metterci un valore dentro

E)

Perché devo usare i puntatori?In che situazioni?Quando si usano?Ho capito che puntano ad un indirizzo.Ma fare

int*ciccio;

ciccio=5;

NSLog(ciccio);

Mi pare più semplice

int ciccio=5;

NSLog(ciccio);

Senza puntatore.

Per fare liste concatenate a puntatori ad esempio, che sono delle specie di Array sequenziali utili in alcune situazioni, ma soprattutto per creare strutture dati ad albero, molto più veloci nelle ricerche e negli ordinamenti, dipende dal tipo di cose che devi fare però.

Per cui vi chiedo QUANDO e PERCHÉ usare un puntatore.

VI ringrazio se qualcuno di voi vorrà rispondere.

Link al commento
Condividi su altri siti

Per cui in questo caso(un esempio):

NSMutableArray *array;
   array = [[NSMutableArray alloc] init];

Creo un puntatore array.

Ad Array inserisco l'indirizzo di???

[[NSMutableArray alloc] init];

Ma in questo caso init....cosa fa?inizializza una variabile??Per cui la crea e ci mette un valore...ma quale??nessuno?

Week end? Gita? Vacanza? Leggi la nostra esperienza: Go2Go.eu

Link al commento
Condividi su altri siti

Dipende dal tipo che crei nello specifico non conosco NSMutableArray perché non so neppure che linguaggio di programmazione stai usando, generalmente se sono numeri è 0 se sono stringhe è la stringa vuota o in generale è il simbolo NULL che sta appunto per nulla, un valore che indica che la loocazione è vuota.

Link al commento
Condividi su altri siti

ah ok...ottimo...ti ringrazio!!Sei stato molto chiaro!!

Sto leggendo il libro cocoa programming for macosx 3rd edition e programmare in C++( per le definizioni), stavo facendo un po' di prove proprio sull'argomento, avevo capito in cosa consistevano, ma non avevo chiaro quando e come usarli.

Ora è un po' più chiara la cosa.

Il puntatore una volta dichiarato in base alla necessità, indicherà sempre un indirizzo di memoria, per cui la sua unica funzione è quella, dipenderà poi dal programmatore l'occasione per farne uso.

Ma va sempre inizializzato un puntatore?

(mi sa che ho posto male la domanda)

Week end? Gita? Vacanza? Leggi la nostra esperienza: Go2Go.eu

Link al commento
Condividi su altri siti

Se crei un puntatore e non lo inizializzi a nulla credo punterà a "Null" cioè un valore che significa appunto "non sto puntanto a nulla"

Tutto ciò che ti sto dicendo però vale per la teoria di come un puntatore dovrebbe essere in un linguaggio di programmazione generico, e di come è su C++ puro, il mescolamento con Cocoa o altri linguaggi non so se possa far variare qualche dettaglio.

Link al commento
Condividi su altri siti

Ah ok perfetto...mille grazie!!!

Ora che ho capito meglio come funzionano ci smanetto un po' sulla pratica...magari provo a modificare anche qualche programma già fatto in esempio sul libro, che è più semplice che crearne proprio da zero.

GRAZIE!

Week end? Gita? Vacanza? Leggi la nostra esperienza: Go2Go.eu

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...