Vous voulez quelque chose comme ceci:
int asd[2][2];
int (*se)[2] = asd;
Cela équivaut à
int (*se)[2] = &asd[0];
parce asd
désintégrations à un pointeur vers son premier élément dans ce contexte.
L'essentiel de garder à l'esprit est que le type de asd[0]
est int[2]
, pas int*
, vous avez donc besoin d'un pointeur vers un int[2]
(à savoir int (*)[2]
) et non un pointeur sur un int*
(à savoir int**
).
Soit dit en passant, vous pouvez faire un point int*
au premier élément du asd[0]
si vous aimez:
int *p = &asd[0][0]; // or just = asd[0];, because it decays to &asd[0][0];
mais accéder aux autres éléments du tableau 2D comme si elle était un tableau 1D, par exemple p[2]
, serait un comportement indéfini.
Comme point plus général, il est souvent préférable de éviter l'utilisation de tableaux de style C crus tout à fait si vous pouvez l'aider. Vous pourriez vouloir enquêter std::array
ou std::vector
, selon vos besoins.
Avez-vous googlé "passer tableau 2D comme paramètre"? –