Je travaille sur un programme où j'essaie de transmettre des paramètres par référence. J'essaie de passer un tableau int 2D et un tableau de caractères 1D par référence.Erreurs/avertissements passant int/char tableaux par référence
prototype Fonction:
void foo (int* (&a)[2][2], char* (&b)[4])
appel Fonction:
foo (a, b);
Cependant, quand je compile le code avec -ansi
et -Wall
drapeaux sur gcc, je reçois les erreurs suivantes:
foo.c: At top level:
error: expected ‘)’ before ‘&’ token
error: expected ‘;’, ‘,’ or ‘)’ before ‘char’
foo.c: In function ‘main’:
error: too many arguments to function ‘foo’
J'ai enlevé le reste du code de mon programme et concentra té sur les bits qui jettent les erreurs. J'ai cherché autour de StackOverflow et essayé différentes façons de passer les paramètres, mais aucun d'entre eux ne semble fonctionner. (I took this way of passing parameters from the discussion on StackOverflow here.)
Pourriez-vous s'il vous plaît me dire où je vais mal?
Alors ... Je ne peux pas passer un tableau par référence en C? –
Non, vous pouvez avoir des références dans n'importe quel contexte dans C. Vous ne pouvez pas non plus transmettre des tableaux par valeur; ils se décomposent toujours en pointeurs vers leur premier élément lorsqu'ils sont passés aux fonctions. –
En C, sa valeur passe toujours.En savoir plus sur la désintégration des tableaux en pointeurs. http://stackoverflow.com/questions/2448204/why-does-this-generate-a-segmentation-fault/2448255#2448255 –