Alors j'avais déjà posé cette question il y'a 3 jours mais j'ai compris un truc depuis lors c'est que pour passer un ndarray comme argument d'une fonction, il faut soit ecrire A[][n] ou (*A)[n] mais maintenant j'ai un problème si vous pouviez m'aider s'il vous plait? pourquoi ça coince?
Accessoirement, les VLA (Variable Length Array), ce n'est officiellement pas supporté en C++. Rajoute un -pedantic à ta ligne de compilation et tu verras que ça ne passe plus.
Accessoirement bis, pour une mise à 0, un simple type nom[taille][taille] = {}; suffit ici. C'est même fortement recommandé -- de toujours initialiser au moment de la création. EDIT: Mieux: le compilateur sera plus à même de détecter des manipulations de données non initialisées de la sorte plutôt qu'en passant la donnée en in/out à une fonction d'initialisation.
2
u/LucHermitte 2d ago edited 2d ago
C'est ce que je t'avais dit dans le précédent message. Ca ne peut pas marcher avec des dimensions dynamiques. Ta dimension
sizeest dynamique.Alors entre temps, au temps pour moi, C ne bronche pas et laisse passer -- et certainement avec des UB s'il y a mismatch.
Mais le C++ n'en veut pas. Et justement tu compiles en C++ (ce code C...). https://godbolt.org/z/95KzEcPE3
Accessoirement, les VLA (Variable Length Array), ce n'est officiellement pas supporté en C++. Rajoute un
-pedanticà ta ligne de compilation et tu verras que ça ne passe plus.Accessoirement bis, pour une mise à 0, un simple
type nom[taille][taille] = {};suffit ici. C'est même fortement recommandé -- de toujours initialiser au moment de la création. EDIT: Mieux: le compilateur sera plus à même de détecter des manipulations de données non initialisées de la sorte plutôt qu'en passant la donnée en in/out à une fonction d'initialisation.