2011-10-20 2 views
-2

En sorte d'insertion,sorte d'insertion dans la programmation c

  • comment insérer un nouvel entier dans un tableau d'entiers?
  • La mémoire du tableau sera allouée pendant la compilation, donc nous ne pouvons pas augmenter la taille du tableau, même si nous allouons un peu d'espace supplémentaire, que devons-nous faire si la mémoire requise dépasse la mémoire allouée?
  • devrions-nous créer un nouveau tableau pour l'insertion de chaque entier?
  • Que devons-nous faire si nous voulons insérer plus de nombres entiers dans le tableau trié? Pouvons-nous le faire avec des pointeurs?
+2

Cela contient trop de questions et n'est pas clair. S'il vous plaît soyez plus précis. Votre question semble se rapporter davantage à l'allocation dynamique des tableaux qu'à l'insertion. – Rob

+4

Je pense que vous avez besoin de prendre du matériel en ligne sur C/books et lire sur l'allocation de la mémoire pour les variables, les tableaux etc et juste la programmation en C en général. L'axiome que la mémoire est alloué lors de la compilation n'est tout simplement pas correct. – Andrew

+0

J'ai demandé plusieurs fois le même point pour être de plus en plus spécifique, pas des questions différentes. Peut-être est-ce lié à l'allocation de mémoire dynamique, mais je demande à propos de l'insertion trier @robjb – CFreak

Répondre

2

Je pense que toutes les questions que vous avez posées peuvent répondre par ce qui suit:

  1. Il est pas vrai - dans plus d'un sens - que la mémoire qui contient des tableaux est attribué lors de la compilation .

    1. La mémoire ne peut pas être allouée avant l'exécution du programme.

    2. Bien que la taille d'un tableau soit généralement décidée lors de la compilation (par exemple, int array[32]), il n'en est pas de même pour les pointeurs. Par exemple, int *array = malloc(many * sizeof(int)); fait de la place pour les entiers many

  2. Bien qu'il est vrai que vous ne pouvez pas augmenter la quantité de mémoire allouée pour un tableau, la même chose ne pas attente pour les pointeurs. Par exemple, array = realloc(many_more * sizeof(int)); fait de la place pour les entiers many_more.

Je vous suggère de lire this tutorial on pointers and arrays.

+1

Il ne fait pas de place pour de nombreux entiers si 'many' se trouve être' SIZE_MAX/sizeof (int) + 1' ... ;-) –