我写了以下代码:
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++;
}
}
Run Code Online (Sandbox Code Playgroud)
而且我收到了上述警告 pLastLetter[i] = &str[strIndex-1];
pLastLetter is a pointers array that points to a char in str[].
任何人都知道为什么我得到它以及如何解决它?
AnT*_*AnT 42
好吧,就像你自己说的那样,pLastLetter是一个char *指针数组,str而是一个数组const char.在&str[strIndex-1]表达具有类型const char*.你是不是允许在指定const char*值的char *指针.这会违反常规的规则.事实上,你正在做的是C中的一个错误.C编译器传统上将其报告为仅仅是"警告"以避免破坏一些旧的遗留代码.
至于"如何解决它"......这取决于你想要做什么.要么使pLastLetter阵列const char*或删除const从str.