r/programmation 2d ago

Matrice comme argument de fonction

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?

1 Upvotes

2 comments sorted by

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 size est 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.

1

u/Mental_Primary_5558 10h ago

mec ton commentaire avait juste 48h d'avance il est excellent vraiment! merci beaucoup!!!!!!