nraynaud a écrit a écrit :
Quand le besoin se fait sentir, le compilo converti un tableau en pointeur.
|
Et une fonction C/C++ ne peut prendre de tableau en argument formel.
Pour ces deux raisons, les crochets vides sont ramenés à un pointeur dans le type d'un argument, et uniquement dans ce cas.
Code :
- int i;
- void func1(int arg1[]); //int* arg1 en vrai
- func1(&i);
- double* pd;
- void func2(double* arg2[]); //double** arg2 en vrai
- func2(&pd);
|
Par contre cela ne vaut que pour la première 'dimension'. Les suivantes font partie intégrante du type, et doivent être spécifiées:
Code :
- int ai[10];
- void func3(int arg3[][10]); //int (*arg3)[10] en vrai (pointeur sur tableau de 10 int)
- func3(&ai);
|
Ça fait partie des incohérences historiques du C, répercutées en C++ au nom de la sacro-sainte compatibilité.
Le C++ a des zones sombres, ouais, bien moisies même...
---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone