Pergunta

Passando meu tempo em idiomas de alto nível que me ocorreu de repente que eu não sabia a diferença entre uma matriz de char e uma corda. Eu acho que eles são a mesma coisa, mas não tenho certeza. Existe uma diferença? É apenas uma matriz de char com alguma abstração?

Foi útil?

Solução

Uma matriz de personagens é simplesmente uma variedade de personagens

Uma string é uma estrutura de dados que usa uma matriz de caracteres

Algumas representações de string usam um terminador nulo (como C), outros usam um prefixo de comprimento

Outras dicas

Uma linha é uma abstração, mas de um seqüência de personagens. Não diz nada de implementação. Se você deseja criar uma implementação de string com base em uma lista vinculada de caracteres, não há nada que o impeça.

Em um idioma como C, há muito pouca diferença - apenas que a String AC é uma série de caracteres terminada nula em endereços seqüenciais, que geralmente é acessada através de um ponteiro.

Em uma linguagem OOP, uma string será um objeto de alguma classe de string. Provavelmente, isso manterá os dados em uma matriz de caracteres internamente, mas você não precisa saber disso. Uma matriz de caracteres pode ser apenas uma matriz simples, mas uma classe de string pode fornecer muitas operações (substringas, regex etc.) em strings se o implementador decidir.

Eu costumava ensinar programação, e era assim que eu costumava explicar esse problema em particular.

Primeiro, concentre -se no que as duas coisas têm em comum: Tanto uma matriz de char quanto uma string consistem em uma sequência de caracteres. Começar um seqüência implica que os personagens são ordenados e que podem ser enumerados, por exemplo.

Agora concentre -se no que cada uma das duas coisas adiciona, em seus particulares diferente maneiras, para esse terreno comum.

UMA Char Array Adiciona o que qualquer matriz é conhecida por adicionar: indexação e acesso aleatório a itens individuais.

UMA corda, por outro lado, acrescenta o fato de que a sequência de chars é vista como uma coisa toda com suas próprias propriedades. Em algumas implementações, alcançar isso significa alterar a maneira como os chars são armazenados (adicionando um nulo de terminação em seqüências C, por exemplo).

Essa abordagem (observe os pontos em comum e, em seguida, como as coisas divergem deles) se mostraram úteis em várias situações.

Espero que isto ajude.

Em C estes são quase os mesmos, embora uma corda tenha um caractere nulo adicional no final.

Em outros idiomas (Java, C# etc), uma string é um objeto, enquanto uma matriz de caracteres é uma matriz de ... chars (que são tipos de dados primitivos).

Normalmente, as strings são implementadas com matrizes de caracteres.

A resposta em certa medida depende de qual idioma você está falando. Nas cordas mundiais .NET/C# são objetos imutáveis, enquanto uma matriz de char você pode adicionar/alterar valores facilmente na matriz. As cordas podem ser tratadas como matrizes de char de maneira somente leitura, como você pode iterar sobre os personagens de uma corda.

No resumo, acho que a maior diferença está em como você deseja trabalhar com eles. Você deseja trabalhar com um pedaço de texto, digamos para mostrar uma mensagem para um usuário final ou está olhando para uma sequência de personagens, fazendo algum processamento na lista? É tudo bastante subjetivo em um certo nível.

String é um class em java. Então tem atributos, por exemplo length. Portanto, quando você solicita o tamanho da string, ele simplesmente retorna que, em vez de calcular o valor a cada vez. Também outros métodos, por exemplo, indexOf, substring, etc. para facilitar a vida para que você não precise fazer isso sozinho.

Uma corda no estilo C é representada internamente pela matriz de caracteres com o ' 0' no final, o que india a extremidade da string.

No C ++, há uma classe de contêiner de string definida em String.h, que fornece algumas operações de string típicas para manipular a string.

Depende do idioma. Nos idiomas C-ish, eles são praticamente sinônimos. Você pode afirmar que a diferença é que "Strings" têm um NUL implícito de terminação, mas isso seria dividir os cabelos.

Fortran é o outro extremo. Existem matrizes de personagens e cordas de personagem são tipos totalmente diferentes, com operações diferentes disponíveis para eles.

Uma string é a matriz de caracteres terminada pelo caractere nulo ' 0'

Em C, uma string é uma variedade de caracteres terminados por um caractere nulo ( 0), mas

Em C ++, uma string é uma classe e usamos seu objeto e não há caractere nulo no final, mas uma matriz de caracteres contém caracteres nulos no final.

Além disso, podemos usar operadores com o objeto String em C ++.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top