4 votes

Passer un tableau multidimensionnel à une fonction (c++) ?

J'ai essayé de passer un tableau multidimensionnel, de taille inconnue, à une fonction, et jusqu'à présent je n'ai pas eu de chance, lorsque le tableau est déclaré, ses dimensions sont des variables :

double a[b][b];

Pour autant que je sache, je dois donner la valeur de b lorsque je déclare la fonction, a peut être inconnu. J'ai essayé de déclarer b comme une variable globale, mais on me dit alors qu'il doit s'agir d'une constante.

ie :

int b;

double myfunction(array[][b])
{
}

int main()
{
int a;
double c;
double myarray[a][b];

c=myfunction(myarray);

return 0;
}

Y a-t-il un moyen de faire fonctionner ce système ?

4voto

Mr.Anubis Points 2427

Pass by value :

double myfunction(double (*array)[b]) // you still need to tell b

Pass by ref :

double myfunction(int (&myarray)[a][b]); // you still need to tell a and b

Mode de présentation :

template<int a, int b> double myfunction(int (&myarray)[a][b]); // auto deduction

1voto

Sean McCully Points 598

La lecture de quelques références sur le C++ et les tableaux pourrait peut-être vous aider,

http://en.cppreference.com/w/cpp/container/array

1voto

shota Points 11

Si vous voulez passer un tableau de taille inconnue, vous pouvez déclarer un tableau dans le tas comme ceci

//Create your pointer
int **p;
//Assign first dimension
p = new int*[N];
//Assign second dimension
for(int i = 0; i < N; i++)
p[i] = new int[M];

 than you can declare a function like that: 
double myFunc (**array);

-1voto

Caesar Points 5012
void procedure (int myarray[][3][4])

En savoir plus ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X