Quelle est la différence entre une structure de données de tableau et un type de données de tableau dans le contexte d’un langage de programmation tel que C?

Wikipedia différencie une structure de données de tableau et un type de données de tableau .

Quelle est la différence entre une structure de données de tableau et un type de données de tableau dans le contexte d’un langage de programmation tel que C?

Qu’est-ce que c’est: int array[]={1, 2, 3, 4, 5}; ?

S’agit-il d’une structure de données de tableau ou d’un type de données de tableau? Pourquoi?

Réponse courte: Faites-vous une faveur et ignorez les deux articles. Je ne doute pas des bonnes intentions des auteurs, mais les articles prêtent à confusion.

Qu’est-ce que c’est: int array[]={1, 2, 3, 4, 5}; ?

S’agit-il d’une structure de données de tableau ou d’un type de données de tableau? Pourquoi?

C’est les deux. La structure de données de tableau discutée dans l’article portant ce nom est supposée se rapporter spécifiquement aux tableaux tels qu’implémentés en C. Le concept de type de données de tableau est supposé être plus abstrait, mais les tableaux de C sont certainement une implémentation du type de données de tableau .

Réponse longue: La différence entre ces deux articles est la différence entre le comportement et la mise en œuvre. Telle qu’utilisée dans les articles, la structure de données d’un tableau fait référence à des éléments stockés séquentiellement dans la mémoire, de sorte que vous pouvez calculer l’adresse de tout élément en:

 address = (base address) + (element index * size of a single element) 

où ‘adresse de base’ est l’adresse de l’élément à l’indice 0.

Le type de données tableau , quant à lui, fait référence à tout type de données qui fournit une séquence logique d’éléments auxquels on accède par index. Par exemple, C ++ fournit std :: vector et Objective-C fournit NSArray et NSMutableArray, dont aucune n’est susceptible d’être implémentée sous la forme d’une séquence d’éléments contigus en mémoire.

La terminologie utilisée dans les articles n’est pas très utile. La définition donnée en haut de l’article de structure de données de tableau est la suivante:

une structure de données masortingcielle ou simplement un tableau est une structure de données constituée d’un ensemble d’éléments (valeurs ou variables), chacun étant identifié par au moins un index

alors que la définition donnée pour le type de données tableau est:

un type de tableau est un type de données destiné à décrire une collection d’éléments (valeurs ou variables), chacun sélectionné par un ou plusieurs index pouvant être calculés au moment de l’exécution

Il n’est pas utile que l’article de structure de données de tableau , qui est apparemment censé concerner l’implémentation de tableaux de style C, inclue une discussion sur les tableaux associatifs et d’autres éléments qui seraient beaucoup plus appropriés dans l’article de type de données de tableau . Vous pouvez comprendre pourquoi c’est en lisant la page de discussion , en particulier Proposition de scinder l’article et la structure du tableau . La seule chose qui est claire à propos de ces articles est que les différents auteurs ne peuvent pas se décider collectivement sur la manière dont le «tableau» devrait être défini et expliqué.

Un type est quelque chose que le programmeur voit; une structure de données est la façon dont quelque chose est mis en œuvre dans les coulisses. Il est concevable qu’un type de tableau soit implémenté dans les coulisses avec par exemple une table de hachage (c’est le cas pour PHP, je pense).

En C, il n’y a pas de distinction; un type de tableau doit être implémenté avec un bloc de mémoire contigu.

La structure de votre tableau détermine son implémentation (stockage et access), le type de données fait référence aux types de données contenus dans le tableau. Pour votre plus grand plaisir, lisez chacun de ces liens.

Les crochets [] désignent un type de données de tableau en C

De même, * est la façon dont vous désignez un type de données de pointeur en C

int array[]={1, 2, 3, 4, 5}; est un exemple de structure de données de tableau en C

Plus précisément, vous avez défini une structure de données comportant 5 nombres entiers disposés de manière contiguë, vous avez alloué suffisamment de mémoire sur la stack pour cette structure de données et vous avez initialisé cette structure de données avec les valeurs 1, 2, 3, 4, 5.

Une structure de données en C a une taille non nulle qui peut être trouvée en appelant sizeof () sur une instance de cette structure.