J'ai une fonction qui renvoie un tableau de différentes longueurs basé sur une recherche de table. Je mets en mémoire la mémoire nécessaire à l'intérieur de la fonction, mais comment puis-je remplir le tableau à partir de son pointeur? Le compilateur lance la même erreur pour mes deux essais (lignes commentées). S'il vous plaît aider!Comment initialiser un tableau après l'allocation de mémoire dynamique?
int lookup(const char *name, float *factors) {
int length;
if(!strcmp(name, "foo")) {
length = 6;
factors = malloc(length * sizeof(float));
// *factors = {0, -0.9, -4.9, -8, -7.8, -23.9};
// factors = {0, -0.9, -4.9, -8, -7.8, -23.9};
}
else if(!strcmp(name, "bar"))
{
length = 4;
factors = malloc(length * sizeof(float));
// *factors = {0, -3, -6, -9};
}
// .......................
// more else if branches
// .......................
else // error: name not found in table
{
factors = NULL;
fprintf(stderr, "name not found in table!!\n");
return 0;
}
return length;
}
J'avais cette idée en tête, mais n'y a-t-il pas une manière plus élégante? – Aamir
Eh bien, c'est assez élégant. Une autre solution serait de ne pas allouer de mémoire, mais d'assigner juste 'factors = initiales', mais, bien sûr, si vous allez modifier les facteurs par la suite, cela ne fonctionnera pas. –