un exemple vaut mieux qu'un long discours :
Code :
- const int i = 1234;
- void fct(const int **var)
- {
- *var = &i; // serait interdit si on avait var du type const int * const *
- }
- int main()
- {
- int a;
- int *p = &a;
- int **pp = &p;
- fct(pp);
- **pp = 456;
- return 0;
- }
|
voilà, si cette écriture était permise, alors j'aurais fait un accès en écriture à une constante sans pour autant que le compilateur ne s'en soit plaint, ce qui n'est pas acceptable.
Ainsi, rendre le pointeur lui-même constant lève cette possibilité et rend à nouveau le typage correct (en espérant que ca clarifie les choses)