advertencia: la asignación descarta los calificadores del puntero tipo de destino

Escribí el siguiente código:

void buildArrays(char *pLastLetter[],int length[], int size, const char str[]) { int i; int strIndex = 0; int letterCounter = 0; for (i=0; i<size; i++) { while ( (str[strIndex] != SEPERATOR) || (str[strIndex] != '\0') ) { letterCounter++; strIndex++; } pLastLetter[i] = &str[strIndex-1]; length[i] = letterCounter; letterCounter = 0; strIndex++; } } 

y recibo la advertencia anterior en pLastLetter[i] = &str[strIndex-1];

pLastLetter is a pointers array that points to a char in str[].

¿Alguien sabe por qué lo consigo y cómo solucionarlo?

Bueno, como usted mismo dijo, pLastLetter es una serie de punteros char * , mientras que str es una matriz de caracteres const char . La expresión &str[strIndex-1] tiene el tipo const char* . No se le permite asignar un valor const char* a un puntero char * . Eso violaría las reglas de la constancia correcta. De hecho, lo que está haciendo es un error en C. Los comstackdores de C tradicionalmente lo reportan como una mera “advertencia” para evitar romper un código antiguo heredado.

En cuanto a “cómo solucionarlo” … Depende de lo que estés tratando de hacer. pLastLetter que pLastLetter una matriz de const char* o elimine la const de str .

str es const, pLastLetter no lo es. Está diciendo que el calificador const se descarta si haces esto.