En C, il n'est pas possible de passer à une fonction
void f(T const * const * a)
un argument d'un des types suivants :
1 2 3
| T * * a;
T * const * b;
T * * const c; |
En fait, pour pouvoir appeler la fonction f, il faut faut au moins que le paramètre passé soit de type :
C'est à dire, pointeur vers un pointeur vers un const.
Pourquoi ? Quel danger y a-t-il à passer a, b ou c à ma fonction f ?
En fait cette restriction en C me parrait étrange car il n'y a à mon avis danger à passer mes pointeurs a, b ou c à ma fonction f, car ma fonction est "plus const" que mes variables a, b et c.
Mais, puisque le C interdit le passage d'une variable non const ** à une fonction const * const *, j'imagine qu'il y a une bonne raison, qui m'échappe. Si quelqu'un connait cette raison, j'aimerai qu'il me la présente.
Partager