Aiuto preparazione esame

di il
1 risposte

Aiuto preparazione esame

Ciao a tutti, sono un novello del forum ed anche della programmazione in C++, mi sto preparando per un esame dopo le feste e volevo chiedervi aiuto per alcune delucidazioni.

1_ ho studiato che l'istruzione &n, mi restituisce l'indirizzo della variabile n, che un puntatore, quando punta ad un oggetto immagazzina in se l'indirizzo dell'oggetto che punta, ma che se utilizzo l'operatore di reference, questo mi restituisce l'indirizzo del puntatore, che e' diverso dall'indirizzo dell'oggetto, faccio un esempio:

int main()
{
	short a[3] = {11, 22, 33};//oggetto
 	cout << "Array a begins at location\t" << a << endl; 
//indirizzo dell'oggetto, in questo caso indirizzo del primo elemento dell'array
	short* p = a;//puntatore all'array
	cout << endl << "&p = " << &p << endl;//indirizzo puntatore
	int i = 0;
	cout << endl << "&p[0] = " << &p[0] << endl;//il mio problema
//da quello che ho studiato qui dovrebbe stamparmi l'indirizzo di p, e invece mi stampa l'indirizzo 
//dell'oggetto puntato da p. non capisco il perche', visto che l'indirizzo dell'elemento puntato 
//da p e' memorizzato come valore di p, e p ha un suo indirizzo
}
2_devo studiare le strutture: liste, alberi, code, ecc...purtroppo il libro che ci fanno usare (non so se ne posso dire il nome) non parla di strutture da sole, ma le affronta con le classi, invece io a lezione le classi non le ho fatte, ma le strutture si. in casa ho trovato un libro di C che le affronta, posso studiarle da li o sono completamente diverse ? oppure sapreste consigliarmi un sito on line che affronta questi argomenti per il C++ ?

Grazie

Edit: Skynet - inserimento tag code.

1 Risposte

  • Re: Aiuto preparazione esame

    1. p punta ad a e quindi p[0] non è nient'altro che il primo elemento di a. &p[0] è infine l'indirizzo di a[0]. Quindi la tua supposizione è errata.
    2. struct e class sono pressoche identiche salvo il fatto che i membri delle strutture sono per definizione pubbliche e quelle delle classi private. Per il resto in C++ non c'è distinzione.
Devi accedere o registrarti per scrivere nel forum
1 risposte