Ok je vois , merci pour vos réponses 

Je savais qu'un tableau était quelque chose qui n'était pas affectable mais le fait d'utiliser un déclarateur absolue du genre
( * tmp ) [ expression_constante ]
m'a troublé.
J'ai saisi que que *tmp ne peut pas être modifié.
La déclaration de
unsigned char ( * tmp ) [ ]
pour moi fonctionne avec gcc , c'est un pointeur , je pense que c'est pour ça qu'il crie pas à ce moment là.
Cela compile mais en fait c'est incorrect et il me le dit des que j'essaye de l'utiliser .
Ca doit venir de là son message error: invalid use of array with unspecified bounds.
J'avais mal saisi que la taille dans la déclaration définissait également le type.
Le problème c'est que dans mon projet , je connais pas la taille de mon tableau au moment de sa déclaration , c'est pour ça que j'ai voulu écrire ce genre de chose .
Mais après avoir lu plus de choses sur le forum , je comprends mieux .
Si je fais
1 2
| unsigned char ( * tmp ) [1];
tmp=malloc( 10 * sizeof( *tmp ) ); |
Je vais m'allouer 10 unsigned char qui seront rangés consécutivement en mémoire.
Et puis aussi j'ai dit une bêtise en haut , j'ai toujours pensé qu'un tableau c'était un pointeur sur son premier élément , en fait c'est plutôt une adresse.
Il n'y a pas de variable créee correspondant à l'identificateur contenant l'adresse du premier élément , c'est seulement l'identificateur qui est interpreté comme une adresse. Et c'est seulement dans les arguments de fonctions que cette fois-ci il y a création de pointeur .
C'est ce que je viens de mieux comprendre après avoir lu divers sujet .
Du coup pour mon allocation , je suis forcé de passer dans la fonction d'allocation
int AlloueBlabla( unsigned char ( ** tmp ) [1] );
Mon prof nous a donné un prototype avec un unique pointeur , je vois pas comment on peut faire autrement qu'augmenter un niveau d'indirection pour créer l'allocation du tableau .
Avec un unique pointeur , l'allocation sera transparente dans l'environnement extérieur.
Il a dû faire une erreur .
Enfin je vais réfléchir encore un peu pour être sûr , c'est pas moi qui me plante.
Partager