temporada sinopsis reparto puntero pochi personajes lombardo capitulos c linked-list

sinopsis - La inicialización descarta los calificadores del tipo de destino del puntero



el puntero sinopsis (2)

Intento imprimir la lista de una lista individualmente vinculada a la que me referí en el texto del enlace . Funciona, pero obtengo las advertencias del compilador:

Initialization discards qualifiers from pointer target type

(en la declaración de inicio = cabeza) y

return discards qualifiers from pointer target type

(en declaración de devolución) en este código:

/* Prints singly linked list and returns head pointer */ LIST *PrintList(const LIST *head) { LIST *start = head; for (; start != NULL; start = start->next) printf("%15s %d ea/n", head->str, head->count); return head; }

Estoy usando XCode. ¿Alguna idea?


En la siguiente función, recibiría la advertencia con la que te encontraste.

void test(const char *str) { char *s = str; }

Hay 3 opciones:

  1. Elimina el modificador const de param:

    void test(char *str) { char *s = str; }

  2. Declara la variable objetivo también como const:

    void test(const char *str) { const char *s = str; }

  3. Use un tipo de conversión:

    void test(const char *str) { char *s = (char *)str; }


Es esta parte:

LIST *start = head;

El parámetro para la función es un puntero a una constante, const LIST *head ; esto significa que no puede cambiar a lo que apunta. Sin embargo, el puntero anterior es a no const; podrías desreferenciarlo y cambiarlo.

Necesita ser const también:

const LIST *start = head;

Lo mismo aplica a su tipo de devolución.

Todo lo que el compilador dice es: "Oye, le dijiste a la persona que llama que no cambiaría nada", pero estás abriendo oportunidades para eso ".