Question

Passer mon temps sur des langages de haut niveau il me est apparu tout à coup que je ne connaissais pas la différence entre un tableau Char et une chaîne. Je pense qu'ils sont la même chose, mais pas sûr. Y at-il une différence? Est-ce juste un tableau Char avec une certaine abstraction?

Était-ce utile?

La solution

un tableau de caractères est tout simplement un tableau de caractères

est une chaîne de structure de données qui utilise un tableau de caractères

certaines représentations de chaîne utilisent un null-terminateur (tel que C), d'autres utilisent un préfixe de longueur

Autres conseils

Chaîne est une abstraction, mais d'une Séquence de caractères. Il ne dit rien de la mise en œuvre. Si vous voulez créer une implémentation chaîne basée sur une liste chaînée de personnages il n'y a rien qui vous empêche.

Dans un langage tel que C, il y a très peu de différence -. Simplement qu'une chaîne c est une série de caractères à terminaison NULL à des adresses séquentielles, qui est généralement accessible par un pointeur

Dans un langage OOP, une chaîne sera un objet d'une classe String. Ce sera probablement contenir les données dans un tableau de caractères en interne, mais vous n'avez pas besoin de savoir. Un tableau de caractères ne peut être un simple tableau, mais une classe String peut fournir de nombreuses opérations (sous-chaînes, expressions régulières, etc.) sur les chaînes si l'implémenteur décide.

Je l'habitude d'enseigner la programmation, et voici comment j'expliquer cette question.

Tout d'abord, se concentrer sur ce que les choses ont en commun : à la fois un tableau de caractères et une chaîne se composent d'une séquence de caractères. Être un séquence implique que les caractères sont ordonnés et qu'ils peuvent être dénombrés, par exemple.

Maintenant se concentrer sur ce que chacun des deux choses ajouter, dans leur particulier différents façons, ce terrain d'entente.

tableau de caractères ajoute ce que tout tableau est connu d'ajouter:. L'indexation et l'accès aléatoire aux éléments individuels

string , d'autre part, ajoute le fait que la séquence de caractères est considérée comme une chose entière avec ses propres propriétés. Dans certaines mises en œuvre, la réalisation de ce moyen de modifier la façon dont les caractères sont stockés (en ajoutant une valeur nulle de terminaison de chaînes C, par exemple).

Cette approche (regardez les traits communs, alors comment les choses divergent d'eux) est avéré utile dans une variété de situations.

Hope this helps.

En C ce sont presque les mêmes, mais une chaîne aura un caractère nul supplémentaire à la fin.

Dans d'autres langues (Java, C #, etc.), une chaîne est un objet, alors qu'un tableau de caractères est un tableau de ... (caractères qui sont des types de données primitifs).

Normalement, les chaînes sont mises en œuvre avec des tableaux de caractères.

La réponse dans une certaine mesure dépend de quelle langue vous parlez. Dans le .Net / C # chaînes du monde sont des objets immuables, alors qu'un tableau de caractères, vous pouvez ajouter / modifier des valeurs facilement dans le tableau. Les chaînes peuvent être traitées sous forme de tableaux de caractère dans une mode de lecture seule, comme vous pouvez parcourir les caractères d'une chaîne.

Dans l'abstrait, je pense que la plus grande différence est dans la façon dont vous voulez travailler avec eux. Êtes-vous désireux de travailler avec un morceau de texte, disons que pour montrer un message à un utilisateur final, ou vous cherchez à une séquence de caractères, effectuer des traitements sur la liste? Il est tout plutôt subjective à un certain niveau.

String est un class en java. Ainsi, il a des attributs par exemple length. Ainsi, lorsque vous demandez la taille de la chaîne, il renvoie simplement qu'au lieu de calculer la valeur à chaque fois. Il a également d'autres méthodes par exemple indexOf, substring, etc pour rendre la vie facile et vous ne devez pas faire vous-même.

Chaîne de style C est représenté en interne par matrice de caractère avec le « \ 0 » à la fin, ce qui indiciates la fin de la chaîne.

En C ++, il y a une classe de conteneur de chaîne définie dans string.h qui fournit des opérations de chaîne typiques pour manipuler la chaîne.

Cela dépend de la langue. Dans les langues C-ish, ils sont à peu près synonymes. Vous pouvez réclamer la différence est que « chaînes » ont un NUL de terminaison implicite, mais ce serait couper les cheveux.

Fortran est l'autre extrême. Il tableaux de caractères et des chaînes de caractères sont des types tout à fait différents, avec différentes opérations disponibles pour eux.

Une chaîne est la matrice de caractères terminée par le caractère nul « \ 0 »

En C, une chaîne de caractères est un tableau de caractères terminée par un caractère nul (\ 0) mais

En C ++, une chaîne est une classe et nous utilisons l'objet et il n'y a pas de caractère nul à la fin mais un tableau de caractères contient des caractères nuls à la fin.

En outre, nous pouvons utiliser des opérateurs avec l'objet de chaîne en C ++.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top