¿Cuál es la diferencia entre una matriz de caracteres y una cadena?

Una matriz de caracteres es una colección de variables de tipo de caracteres que tienen el mismo nombre, pero a las que hacen referencia los índices. Por ejemplo,

char arr [] = nuevo char [20];

crea una matriz de 20 variables de tipo de caracteres.

Cadena, por otro lado, es una secuencia de caracteres, ya sea como una constante literal o una variable.

El lenguaje de programación C trata una cadena como una matriz de caracteres terminados por un carácter nulo. Por ejemplo,

char arr [] = “Quora”;

en C, creará una matriz de caracteres ‘Q’, ‘u’, ‘o’, ‘r’, ‘a’, ‘\ 0’, donde ‘\ 0’ es el carácter nulo.

En C ++, las cadenas se pueden representar como objetos de la clase String o como matrices de caracteres con terminación nula. C ++ permite cadenas mutables, que se pueden cambiar después de la creación.

Por otro lado, lenguajes como Java permiten que las cadenas se representen solo como objetos de la clase String. En Java, las cadenas son inmutables, es decir, no se pueden cambiar una vez que se han creado. Para crear cadenas mutables, necesitamos crear objetos de la clase StringBuffer.

Cuando se representa como objeto, los caracteres individuales de una cadena no se almacenan como variables individuales. Pero cuando la cadena se representa como una matriz de caracteres, cada carácter de la cadena, incluido el carácter nulo, es una variable independiente.

Esa es una pregunta paradójica, lleva tiempo.

Bueno, lo simplificaré de esta manera.

char ar [] = “123456”;

En carácter, no necesita mantener específicamente el carácter nulo al final. Detecta automáticamente la longitud de la cadena y agrega el carácter nulo.

char ar [] = ”123456 \ 0” (en tiempo de ejecución)

Pero,

Es una condición que siempre debe definir la matriz de caracteres, con algún valor.

En cadena

char ar [6] = ”12345 \ 0”; Así es como se declara una cadena normal. Pero cuando desea finalizar la cadena, para tres caracteres, es imprescindible que siempre finalice el último valor con ‘\ 0’, de lo contrario, obviamente imprimiría valores basura.

Y otra sugerencia, cuando está copiando un puntero de caracteres, es una buena práctica usar strncpy.

Lo que evita el concepto de valor de basura.

Un conjunto de caracteres es simplemente un conjunto de caracteres.

Una cadena es una estructura de datos que usa una matriz de caracteres

Algunas representaciones de cadenas usan un terminador nulo (como C), otras usan un prefijo de longitud

¿Cómo harás la suma de la matriz de 2 caracteres?

char a [10], b [10], c [20];
para (i = 0; i <10; i ++)
{
c [i] = a [i];
}
para (j = 0; j <10; j ++)
{
c [i] = b [j];
i ++; // Esta era la forma más simple en que podía pensar
}

¿Cómo harás la adición de 2 cuerdas?

cadena a = “hola”, b = “mundo”, c;
c = a + b;

Entonces, con la cadena, la forma en que realiza la suma también cambia

Gracias por A2A

Matriz de personajes:

#include
#include
// ———————–

char char_array1 [6] = {‘H’, ‘E’, ‘L’, ‘L’, ‘O’, ‘\ 0’};
// arriba, ‘\ 0’ es un carácter nulo, se requiere

// ———————–
char char_array2 [] = {‘H’, ‘E’, ‘L’, ‘L’, ‘O’, ‘\ 0’};
// arriba, ‘\ 0’ es un carácter nulo, se requiere
// puedes saltarte el 6, escribir [] en lugar de [6]
// el programa cuenta para ti.
// creo que esta es una mejor manera de escribir
// ———————–

Cuerda:

// ———————–
#include
#include

char string1 [] = “Hola”;
// arriba, “Hola” es una cadena de caracteres
// no hay caracteres nulos
// no hay mención en [6], es solo []
// esta es la mejor manera de escribir, en lenguaje C, creo

// ———————–

#include
#include
usando el espacio de nombres estándar;

string string2 = “Hola”
// arriba, “Hola” es una cadena de caracteres
// no hay caracteres nulos
// no hay mención en [6]
// no hay mención de []
// el tipo de datos es ‘string’ (no el carácter y []), y las inclusiones son diferentes
// esta es la mejor manera de escribir, en lenguaje C ++, creo
// ———————–

Espero que haya ayudado.

La mejor de las suertes.

La matriz de caracteres forma una cadena. Por lo tanto, es solo una secuencia de caracteres seguida de un carácter nulo. Entonces, el carácter es como un bloque de construcción para la cadena mientras la compone. Es más fácil manejar las cadenas ya que la mayoría de las funciones incorporadas ya están disponibles en la biblioteca. Sin embargo, no existe ese tipo de datos para la cadena en C.

Una matriz es una serie de elementos del mismo tipo colocados en ubicaciones de memoria contiguas a las que se puede hacer referencia individualmente agregando un índice a un identificador único. -Arrays – Tutoriales de C ++

Una serie de caracteres es una colección / disposición de caracteres.

char character_array = {‘a’, ‘b’, ‘c’};
// No hay caracteres NULL al final de una matriz de caracteres.

Una cadena es una secuencia de caracteres o una disposición ordenada de caracteres, pero una cadena siempre termina con un carácter NULL, mientras que no es necesario que una matriz de caracteres termine con un carácter NULL .

Las cadenas se representan internamente como una matriz de caracteres con un carácter NULL (‘\ 0’) al final para marcar el final de la cadena.

char my_string [] = “abc”;
// crea una matriz my_string [] = {‘a’, ‘b’, ‘c’, ‘\ 0’}

// Métodos para crear cadenas
char my_string [] = {‘a’, ‘b’, ‘c’, ‘\ 0’};
char my_string [] = “abc”;
char * my_string = “abc”;

Finalmente tenga en cuenta la diferencia minuto,

char my_string [] = “abc”;
// crea una matriz my_string [] = {‘a’, ‘b’, ‘c’, ‘\ 0’}

// Un conjunto de caracteres
char character_array = {‘a’, ‘b’, ‘c’};

Si una matriz de caracteres no tiene terminación NULL, entonces no es una cadena, solo es una matriz de caracteres.

En términos de lo que pueden almacenar, son lo mismo.

char es solo un tipo de datos.

String es una clase y tiene muchas funciones estándar y útiles que incluso podrían anularse para satisfacer sus necesidades.

Si eres un novato y no entendiste lo que dije, solo entiende que tienes más libertad y funcionalidad con Strings que en char.

Si es Java tu aprendizaje, te recomiendo Bucky Roberts, también conocido como thenewboston.