Pregunta

Gasto mi tiempo en lenguajes de alto nivel que de repente se me ocurrió que yo no sabía la diferencia entre una Matriz de Char y String.Creo que son la misma cosa pero no estoy seguro.Hay una diferencia?Es simplemente una Matriz de Char con un poco de abstracción?

¿Fue útil?

Solución

una matriz de caracteres es simplemente un conjunto de caracteres

una cadena es la estructura de datos que utiliza una matriz de caracteres

algunas representaciones de cadena utilizan un terminador nulo (como C), otros utilizan un prefijo de longitud

Otros consejos

Una cadena es una abstracción, sino de un secuencia de caracteres. No dice nada de la aplicación. Si desea crear una aplicación de cadena basado en una lista enlazada de caracteres que no hay nada que le para.

En un lenguaje como C, hay muy poca diferencia -. Sólo que una cadena c es una serie terminada en nulo de caracteres en las direcciones secuenciales, al que se accede generalmente a través de un puntero

En un lenguaje de programación orientada a objetos, una cadena será un objeto de alguna clase String. Esto probablemente contener los datos en una matriz de caracteres internamente, pero usted no necesita saber eso. Una matriz de caracteres sólo puede ser una matriz simple, sino una clase String puede proporcionar muchas operaciones (subseries, expresiones regulares, etc.) en las cadenas si el implementador decide.

Yo solía enseñar programación, y esto es lo que he utilizado para explicar este tema en particular.

En primer lugar, centrarse en lo que ambas cosas han en común:tanto una matriz de char y una cadena consiste de una secuencia de caracteres.Ser un secuencia implica que los personajes están ordenados y que pueden ser enumerados, por ejemplo.

Ahora se centran en lo que cada una de las dos cosas que añadir, en su particular diferentes maneras, a esta base común.

Un matriz de char agrega lo que cualquier matriz es conocida para agregar:la indexación y el acceso aleatorio a los elementos individuales.

Un cadena, por otro lado, agrega el hecho de que la secuencia de caracteres que es visto como un todo, con sus propias propiedades.En algunas implementaciones, la consecución de este medio alterar la forma en que los caracteres se almacenan (añadiendo una terminación null en las cadenas de C, por ejemplo).

Este enfoque (ver los puntos en común y, a continuación, cómo las cosas se aparten de ellos) ha demostrado ser útil en una variedad de situaciones.

Espero que esto ayude.

En C éstas son casi lo mismo, aunque una cadena tendrá un carácter nulo adicional al final.

En otros idiomas (Java, C #, etc), una cadena es un objeto, mientras que una matriz de caracteres es un conjunto de caracteres ... (que son tipos de datos primitivos).

Normalmente, las cadenas se implementan con matrices de caracteres.

La respuesta, en cierta medida depende de qué idioma que estás hablando. En el .Net / C # cadenas mundiales son objetos inmutables, mientras que una matriz de caracteres se puede añadir / modificar valores fácilmente en la matriz. Las cadenas pueden ser tratados como arrays de char de un modo de sólo lectura, como se puede iterar sobre los caracteres de una cadena.

En el resumen Creo que la mayor diferencia está en la forma en que desea trabajar con ellos. ¿Usted está queriendo trabajar con un trozo de texto, digamos para mostrar un mensaje a un usuario final, o usted está mirando a una secuencia de caracteres, haciendo algún tipo de procesamiento en la lista? Es todo bastante subjetivo a un cierto nivel.

String es un class en Java. Por lo que tiene atributos, por ejemplo, length. Cuando se pregunta por el tamaño de la cadena simplemente devuelve que en lugar de calcular el valor cada vez. También otros métodos por ejemplo indexOf, substring, etc para hacer la vida más fácil para que usted no tiene que hacer eso mismo.

Una cadena de estilo C es internamente representado por matriz de carácter con el '\ 0' en el extremo, que indiciates el final de cadena.

En C ++, hay una clase de contenedor cadena definida en string.h que proporciona algunas operaciones típicas de cadena para manipular la cadena.

Depende del idioma. En lenguajes C-ish, que son más o menos sinónimo. Se podría reclamar la diferencia es que "cadenas" tienen un nulo de terminación implícita, pero eso sería hilar muy fino.

Fortran es el otro extremo. Hay matrices de caracteres y cadenas de caracteres son completamente diferentes tipos, con diferentes operaciones disponibles para ellos.

Una cadena es la matriz de caracteres terminada por el carácter nulo ‘\ 0’

En C, una cadena es una matriz de caracteres terminada por un carácter nulo (\ 0) pero

En C ++, una cadena es una clase y utilizamos su objeto y no hay ningún carácter nulo al final pero una matriz de caracteres contiene carácter nulo al final.

Además, podemos utilizar los operadores con el objeto de cadena en C ++.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top