[C++] Ridefinire array

Cuppls1
Salve,
non capisco per quale motivo il compilatore non mi segnali errore ,anzi avviene il cambiamento nell'array come se niente fosse in righe di codice come queste:

int array[2] {1,2}
array[0]=5;


oppure

int array[2];
array[0]=0;
array[0]=1;


l'array non è un puntatore costante e quindi non modificabile??

Risposte
apatriarca
Prima di tutto c'è differenza tra puntatore costante e puntatore a qualcosa di costante, cioè tra "T * const" e "const T *". Un puntatore costante è semplicemente una variabile che contiene un indirizzo costante. Non è possibile modificare la locazione di memoria a cui punta, ma questo non vuol dire che non possa invece essere modificato il valore che è memorizzato a tale locazione di memoria. Nel secondo tipo invece l'indirizzo può essere modificato ma non il valore a cui punta tale indirizzo.

L'array è più affine al primo tipo. Non puoi insomma cambiare a cosa punta, ma i valori possono essere cambiati tranquillamente. Se avessi definito l'array come "const int array[2];" non avresti potuto modificare neanche quelli. Comunque c'è differenza tra un puntatore costante e un array anche se diventano uguali quando vengono passati ad una funzione.

Cuppls1
Ti ringrazio. Dalle note del mio docente avevo capito che l'array non era modificabile!

apatriarca
Non sarebbero molto utili se fosse così.. :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.