Passer des tableaux multidimensionnels comme arguments de fonction en C

En C, puis-je passer un tableau multidimensionnel à une fonction en tant qu'argument unique lorsque je ne sais pas quelles seront les dimensions du tableau ?

De plus, mon tableau multidimensionnel peut contenir des types autres que des chaînes.

请先 登录 后评论

1 réponses

John Bode

Transmettez un pointeur explicite au premier élément avec les dimensions du tableau en tant que paramètres distincts. Par exemple, pour gérer des tableaux 2D de taille arbitraire :

void func_2d(int *p, size_t M, size_t N)
{
  size_t i, j;
  ...
  p[i*N+j] = ...;
}

qui s'appellerait comme

...
int arr1[10][20];
int arr2[5][80];
...
func_2d(&arr1[0][0], 10, 20);
func_2d(&arr2[0][0], 5, 80);

Le même principe s'applique aux tableaux de plus grande dimension :

func_3d(int *p, size_t X, size_t Y, size_t Z)
{
  size_t i, j, k;
  ...
  p[i*Y*Z+j*Z+k] = ...;
  ...
}
...
arr2[10][20][30];
...
func_3d(&arr[0][0][0], 10, 20, 30);
请先 登录 后评论