请帮助我理解我的双指针算法错误。我知道我显然做了不正确的事但是什么?看看我标记的行,“坏指针”。我的直觉告诉我这应该有效,但我猜不是。用C编程。
/*
*This function searches for prefixes within the string array.
*@param stringArray array containing strings
*@param searchPrefix a string or characters to search for at beginning of string
*@return void
*/
void prefixSearch(char* stringArray[SIZE], char* searchPrefix){
int count = strlength(searchPrefix);//size of the prefix search
while(count > 0){
if(**stringArray == *searchPrefix){
printf("%c match %c\n", **stringArray, *searchPrefix);
**stringArray++;//want to move to next character, instead get bad pointer.
*searchPrefix++;//moves to next char
}else{
stringArray++;//no match, go to next string
}
count--;//decrement
}
}
答案 0 :(得分:1)
*
和++
运算符具有相同的优先级和从右到左的关联性,因此不工作的行解析如下:
*(*(stringArray++));
我实际上并不理解您的代码,但由于取消引用运算符无效,因此无法实现您的意图。大概你想要这个:
(**stringArray)++;
答案 1 :(得分:1)
你必须转移到下一个角色
使用
(*stringArray)++
代替**stringArray++
和
searchPrefix++
代替*searchPrefix++