Cuando se escribe la declaración
*src = "anotherstring";
el compilador ve la cadena constante "abcdefghijklmnop"
como una matriz. Imagine que ha escrito el siguiente código:
char otherstring[14] = "anotherstring";
...
*src = otherstring;
Ahora, está un poco más claro lo que está sucediendo. El lado izquierdo, *src
, se refiere a char
(ya que src
es del tipo puntero-a-char
) mientras que el lado derecho, otherstring
, se refiere a un puntero.
Esto no es estrictamente prohibido, porque es posible que desee almacenar la dirección que un puntero apunta a. Sin embargo, normalmente se usa un lanzamiento explícito en ese caso (que no es demasiado común en un caso). El compilador está lanzando una bandera roja porque es probable que tu código no esté haciendo lo que crees que es.
Me parece que usted está tratando de asignar una cadena. Las cadenas en C no son tipos de datos como que están en C++ y en su lugar se implementan con las matrices char
. No puede asignar valores directamente a una cadena como lo intenta hacer. En su lugar, es necesario utilizar funciones como strncpy
y amigos de <string.h>
y utilizar char
matrices en lugar de char
punteros. Si simplemente desea que el puntero apunte a una cadena estática diferente, entonces suelte el *
.
Está en desuso en C para usar un 'char *' no const para apuntar a constantes de cadena - debe cambiar 'src' para que sea del tipo' const char * '. –