usar lenguaje leer imprimir funciones definicion como caracteres cadenas cadena arreglo c++ string pointers char literals

c++ - lenguaje - Asignar un literal de cadena a un char*



leer cadena de caracteres en c (3)

En su segundo ejemplo, debe asegurarse de no intentar modificar la cadena apuntada por pc2 .

Si necesita modificar la cadena, existen varias alternativas:

  1. Haga una copia asignada dinámicamente del literal (no olvide free() cuando termine):

    char *pc3 = strdup("test string"); /* or malloc() + strcpy() */

  2. Use una matriz en lugar de un puntero:

    char pc4[] = "test string";

Posible duplicado:
¿Cómo deshacerse de la deprecated conversion from string constant to ''char*'' advertencias deprecated conversion from string constant to ''char*'' en GCC?

Esta asignación:

char *pc1 = "test string";

me da esta advertencia:

advertencia: conversión obsoleta de cadena constante a ''char *''

mientras que este parece estar bien:

char *pc2 = (char*)("test string");

¿Es esta una mejor manera de proceder?

Notas: por otras razones, no puedo usar un const char* .


Eso depende de si necesita modificar la cadena literal o no. En caso afirmativo,

char pc1[] = "test string";


Un literal de cadena es un const char[] en C ++, y puede almacenarse en una memoria de solo lectura para que su programa se bloquee si intenta modificarlo. Señalar un puntero no const es una mala idea.