usar matriz leer funciones espacios ejemplos con como caracteres cadenas cadena arreglo c

matriz - Cómo declarar cadenas en C



leer cadenas con espacios en c (4)

Las cadenas en C se representan como matrices de caracteres.

char *p = "String";

Está declarando un puntero que apunta a una cadena almacenada en algún lugar de su programa (la modificación de esta cadena es un comportamiento indefinido) de acuerdo con el lenguaje de programación C 2 ed.

char p2[] = "String";

Está declarando una matriz de char inicializada con la cadena "String", dejando al compilador el trabajo para contar el tamaño de la matriz.

char p3[5] = "String";

Está declarando una matriz de tamaño 5 e inicializándola con "Cadena". Este es un error porque "Cadena" no encaja en 5 elementos.

char p3[7] = "String"; es la declaración correcta (''/ 0'' es el carácter de terminación en c cadenas).

http://c-faq.com/~scs/cclass/notes/sx8.html

Posible duplicado:
Asignación de memoria char * y char []

¿Alguien puede explicarme cuál es la diferencia entre estas líneas de código?

char *p = "String"; char p2[] = "String"; char p3[7] = "String";

¿En qué caso debo usar cada uno de los anteriores?


No deberías usar el tercero porque está mal. "Cadena" toma 7 bytes, no 5.

El primero es un puntero (se puede reasignar a una dirección diferente), los otros dos se declaran como matrices y no se pueden reasignar a diferentes ubicaciones de memoria (pero su contenido puede cambiar, use const para evitar eso).


Este enlace debe satisfacer tu curiosidad.

Básicamente (olvidando su tercer ejemplo que es malo), el diferente entre 1 y 2 es que 1 asigna espacio para un puntero a la matriz.

Pero en el código, puede manipularlos como punteros de todos modos; lo único, no puede reasignar el segundo.


char *p = "String"; means pointer to a string type variable.

char p3[5] = "String" ; significa que está predefiniendo el tamaño de la matriz para que no contenga más de 5 elementos. Tenga en cuenta que, para las cadenas, el valor nulo "/ 0" también se considera como un elemento. Por lo tanto, esta instrucción daría un error ya que la cantidad de elementos es 7, por lo que debería ser:

char p3[7]= "String";