Déclaration de tableau variable

Considérez le code C ci-dessous:

#include int main() {int n,i; scanf("%d",&n); int a[n]; //Why doesn't comstackr give an error here? } 

Comment puis-je déclarer un tableau lorsque le compilateur ne le sait pas initialement?

Lorsque la taille exacte du tableau est inconnue jusqu’au moment de la compilation, vous devez utiliser l’allocation de mémoire dynamic. Dans la bibliothèque standard C, il existe des fonctions pour l’allocation dynamic de la mémoire: malloc, realloc, calloc et free.

Ces fonctions se trouvent dans le fichier d’en-tête .

Si vous voulez créer un tableau, vous le faites:

 int array[10]; 

Dans l’allocation de mémoire dynamic, vous effectuez les tâches suivantes:

 int *array = malloc(10 * sizeof(int)); 

Dans votre cas c’est:

 int *array = malloc(n * sizeof(int)); 

Si vous allouez une position de mémoire, n’oubliez jamais de désallouer:

 if(array != NULL) free(array); 

L’allocation de mémoire est un sujet complexe, je vous suggère de le rechercher car ma réponse était simple. Vous pouvez commencer avec ce lien:

https://www.programiz.com/c-programming/c-dynamic-memory-allocation