我寫了下面的代碼:警告:分配丟棄了指針目標類型的限定
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[].
任何人都知道上面的警告爲什麼我得到它並如何解決它?
非常感謝您的快速回答,這使我再次遇到了一個問題:如果這是一個函數: void buildArrays(char * pLastLetter [],int length [],int size,const char str []) 可以通過以下方式調用此函數: buildArrays(pLastLetter [],length,str)其中str的類型是char *而不是const char *? 編譯器不會輸出警告,但它可能導致未定義的行爲? 謝謝 – 2010-08-13 18:51:48
@Asher:'const T *'只是一個承諾,不會通過該指針修改指針,所以你可以隱式地將'T *'轉換爲'const T *'精細。 (不過,這對於指針指針來說倒是如此,請參見http://c-faq.com/ansi/constmismatch.html)。 – jamesdlin 2010-08-13 23:13:17