1

请帮助我理解我的双指针算法做错了什么。我知道我显然做错了什么,但是什么?看看我标记的行,“坏指针”。我的直觉告诉我这应该可行,但我想不是。用 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
}

}

4

2 回答 2

1

*and运算符具有相同的++优先级和从右到左的关联性,因此不起作用的行解析如下:

*(*(stringArray++));

我实际上并不理解您的代码,但这不是您想要的,因为取消引用运算符无效。大概你想要这个:

(**stringArray)++;
于 2012-11-14T04:33:50.623 回答
1

你必须移动到下一个字符,所以

采用

(*stringArray)++代替**stringArray++

searchPrefix++代替*searchPrefix++

于 2012-11-14T05:12:14.317 回答