paradigms - leer - matriz de cadenas en c
¿Cuál es la diferencia entre una matriz Char y una cadena? (10)
Depende del idioma. En lenguajes C-ish, son bastante sinónomos. Se podría afirmar que la diferencia es que las "cadenas" tienen un nul de terminación implícito, pero eso sería la división de los pelos.
Fortran es el otro extremo. Las matrices de caracteres y las cadenas de caracteres son tipos completamente diferentes, con diferentes operaciones disponibles para ellos.
Pasando mi tiempo en idiomas de alto nivel, de repente me di cuenta de que no sabía la diferencia entre un Char Array y una String. Creo que son lo mismo pero no seguro. ¿Hay una diferencia? ¿Es solo un Char Array con algo de abstracción?
En C, estos son casi iguales, aunque una cadena tendrá un carácter nulo adicional al final.
En otros lenguajes (Java, C #, etc.), una cadena es un objeto, mientras que una matriz de caracteres es una matriz de ... caracteres (que son tipos de datos primitivos).
Normalmente, las cadenas se implementan con matrices de caracteres.
En C, una cadena es una matriz de caracteres terminados por un carácter nulo (/ 0) pero
En C ++, una cadena es una clase y usamos su objeto y no hay un carácter nulo al final, pero una matriz de caracteres contiene un carácter nulo al final.
Además, podemos usar operadores con el objeto cadena en C ++.
Hasta cierto punto, la respuesta depende de qué idioma se habla. En el mundo .Net / C #, las cadenas son objetos inmutables, mientras que una matriz de caracteres puede agregar / cambiar valores fácilmente en la matriz. Las cadenas se pueden tratar como matrices de caracteres de forma de solo lectura, ya que puede iterar sobre los caracteres de una cadena.
En resumen, creo que la mayor diferencia está en cómo desea trabajar con ellos. ¿Desea trabajar con un trozo de texto, digamos para mostrar un mensaje a un usuario final, o está mirando una secuencia de caracteres, haciendo algún procesamiento en la lista? Todo es bastante subjetivo a cierto nivel.
Solía enseñar programación, y así es como solía explicar este problema en particular.
Primero, enfóquese en lo que ambas cosas tienen en común : tanto una matriz char como una cadena consisten en una secuencia de caracteres. Ser una secuencia implica que los caracteres están ordenados y que se pueden enumerar, por ejemplo.
Ahora concéntrese en lo que cada una de las dos cosas agrega, en sus formas particulares diferentes , a este terreno común.
Una matriz char agrega lo que se sabe que cualquier matriz agrega: indexación y acceso aleatorio a elementos individuales.
Una cadena , por otro lado, agrega el hecho de que la secuencia de caracteres se ve como una cosa completa con sus propias propiedades. En algunas implementaciones, lograr esto significa alterar la forma en que se almacenan los caracteres (agregando un nulo de terminación en las cadenas C, por ejemplo).
Este enfoque (observe los puntos en común, luego cómo se desvían las cosas de ellos) ha resultado útil en una variedad de situaciones.
Espero que esto ayude.
Una cadena es una abstracción, pero de una secuencia de caracteres. No dice nada de implementación. Si desea crear una implementación de String basada en una lista de caracteres vinculados, no hay nada que lo detenga.
En un lenguaje como C, hay una pequeña diferencia: solo que una cadena de CA es una serie de caracteres terminados en cero en direcciones secuenciales, a la que generalmente se accede mediante un puntero.
En un lenguaje OOP, una cadena será un objeto de alguna clase de cadena. Esto probablemente mantendrá los datos en una matriz de caracteres internamente, pero no es necesario que lo sepa. Una matriz de caracteres solo puede ser una matriz simple, pero una clase String puede proporcionar muchas operaciones (subcadenas, expresiones regulares, etc.) en cadenas si el implementador decide hacerlo.
Una cadena de estilo C está representada internamente por una matriz de caracteres con ''/ 0'' al final, lo que indica el final de la cadena.
En C ++, hay una clase de contenedor de cadena definida en string.h que proporciona algunas operaciones de cadena típicas para manipular la cadena.
Una cadena es la matriz de caracteres terminada por el carácter nulo ''/ 0''
una matriz de caracteres es simplemente una matriz de caracteres
una cadena es una estructura de datos que utiliza una matriz de caracteres
algunas representaciones de cadena usan un terminador nulo (como C), otras usan un prefijo de longitud
String
es una class
en java. Así que tiene atributos, por ejemplo, la length
. Por lo tanto, cuando solicita el tamaño de la cadena, simplemente devuelve eso en lugar de calcular el valor cada vez. También hay otros métodos, por ejemplo, indexOf
, substring
, etc. para hacer la vida más fácil para que no tenga que hacerlo usted mismo.