Devo essere sicuro che la funzione non modifica il contenuto.
Quali contenuti? Il valore indicato dal puntatore? In questo caso, è possibile dichiarare la vostra funzione come
void function(const int *ptr);
poi function()
non può cambiare il numero intero puntato da ptr.
Se si desidera solo per fare in modo ptr
sé non è cambiato, non preoccupatevi: è passato per valore (come tutto in C), quindi, anche se la funzione cambia il suo parametro ptr
, che non influirà il puntatore che è stata approvata in.
fonte
2012-11-18 11:15:36
Anche se si utilizza (const int * ptr) come parametro è ancora possibile modificare il valore si punta (creando un secondo puntatore all'interno della funzione, per esempio). L'unico modo per essere sicuri al 100% che non cambierà è passare una copia del valore. Destra? –
@DanielS se crea un puntatore non-const e rende punto il contenuto del const puntatore è un passo nella terra undefined-comportamento. Cioè è un codice non valido – cnicutar
Non posso usare const, voglio solo assicurarmi che la funzione usi una copia dei contenuti passati tramite puntatore. La memcpy sembra la soluzione migliore, puoi mostrarmi la sintassi, per favore? – Mc128k