Parola CONST su parametro funzione

Ciao, sto studiando delle librerie e spesso viene messo CONST davanti a dei parametri passati alle funzioni. Ho letto delle guide C/C++ e da quello che ho capito serve a "bloccare" il valore della variabile. Però vedo che a volte viene messo CONST anche quando all'interno della funzione la variabile viene solo letta. Esempio:

void nomeFunzione( const uint8_t pippo )
{
    uint8_t pluto;

    pluto = pippo;

}

Non capisco perchè specificare CONST se poi pippo non è modificata o altro...

Per evitare che inavvertitamente il programmatore possa modificarla. E' come quando si mette const di fronte alle variabili che contengono il numero di un pin, si fa per evitare che per sbaglio ne venga cambiato il valore. In questo modo in fase di compilazione si ha un errore da parte del compilatore così che si possa sapere di aver fatto casino.

Ok, quindi un di più, giusto per essere sicuri. Grazie x la risposta

Ci sono altre motivazioni: Se guardi il prototipo di una funzione, ti puoi accorgere se l'argomento che passi viene modificato o meno, se si usa sempre const in tutti gli argomenti che le funzioni non modificano, quando il const non è presente allora capisci che la funzione modifichera il valore dell'argomento.

Nel caso di un tipo primitivo come int, il const serve a poco, perchè quando passi un argomento implicitamente ne viene fatta una copia, quindi il const è superfluo, ma rimane valida la spiegazione data da leo. Più importante invece quando l'argomento è un riferimento o un puntatore, cioè.

Tra le altre cose passare un riferimento è più efficiente, ma c'è il rischio di modificare il contenuto del riferimento, allora per evitare ambiguità si usa "const String &name"

name sarà visibile dentro la funzione e questo non può modificarne il contenuto. Il programmatore che si trova ad usare una funzione che non ha scritto lui, ha la certezza che l'argomento "name" che gli sta passando non verra modificato.

Mentre se non ci fosse il const, il programmatore sapendo che il contenuto può essere manipolato dalla funzione, prima di chiamarla si fa una copia delll'oggetto originale, sempre che gli serva l'originale.

stessa cosa nel caso di puntatori

Ciao.

Grazie