我写了以下代码:
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++;
}
}
我在pLastLetter[i] = &str[strIndex-1];
pLastLetter is a pointers array that points to a char in str[].
任何人都知道为什么我会得到它以及如何解决它?
答案 0 :(得分:40)
嗯,正如您自己所说,pLastLetter
是char *
指针的数组,而str
是const char
的数组。 &str[strIndex-1]
表达式的类型为const char*
。您不能将const char*
值分配给char *
指针。这会违反常规的规则。事实上,你所做的是C中的一个错误.C编译器传统上只是将其报告为“警告”,以避免破坏旧的遗留代码。
至于“如何修复它”......这取决于你想要做什么。将pLastLetter
数组const char*
或从const
移除str
。
答案 1 :(得分:5)
str是const,pLastLetter不是。它说如果你这样做就会丢弃const限定符。