Originariamente inviato da boxer89
ti ringrazio per avermi dato la spiegazione del'esercizio....cmq ti assicuro che quando ho dato gli esami su java,non mi ha nessuno insegnato a usare i puntatori,solo con il linguaggio C ho saputo della loro esistenza ..... ma quindi fammi capire un attimo il puntatore serve per puntare all'indirizzo e nn al contenuto? quindi se incremento il puntatore si passa all'indirizzo successivo? inoltre il puntatore bidimensionale a cosa punta? nel senso che differenza c'è?
Sisi infatti con Java nessuno ti spiega i puntatori, ma ogni oggetto non di base è una reference (quindi un indirizzo, quindi implicitamente è un puntatore).

Si i puntatori sono variabili che hanno 2 valori, l-value e r-value: l'lvalue è l'indirizzo dove punta, l'rvalue è il valore dove punta quell'indirizzo.

l'lvalue lo riprendi normalmente usando nome_puntatore, mentre per l'rvalue ci vuole l'operatore di dereferenziazione (operator*).
scrivendo nome_puntatore++ incrementi l'indirizzo, scrivendo *nome_puntatore++ incrementi il valore in quell'indirizzo (siccome la priorità degli operatori va da sinistra verso destra, prima c'è una dereferenziazione, e poi c'è l'operatore d'incremento (alla fine la devi vedere sempre così, come 2 operatori con una priorità)
Quindi stesso discorso per *++nome_puntatore, prima incrementa nome_puntatore, poi dereferenzia, quindi sta volta non incrementa il valore, ma l'indirizzo quindi prende il valore all'indirizzo nome_puntatore + 1.

Guardandola in quest'ottica, i puntatori bidimensionali li devi vedere come puntatore a puntatore (**puntatore), quindi puntatore[0] contiene un puntatore ecc..

Non esistono array solo bidimensionali, ci sono anche i tridimensionali, quadridimensionali ecc.... (int ***tridimensionale, ****quadridimensionale), ma questa è un'altra storia .....