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

次の文字に移動する必要があるため、

使用する

(*stringArray)++それ以外の**stringArray++

searchPrefix++それ以外の*searchPrefix++

于 2012-11-14T05:12:14.317 に答える
1

*and演算子は++同じ優先順位と右から左への結合性を持つため、動作していない行は次のように解析されます。

*(*(stringArray++));

私は実際にあなたのコードを理解していませんが、逆参照演算子は効果がないため、意図したものではありません。おそらく、代わりにこれが必要でした:

(**stringArray)++;
于 2012-11-14T04:33:50.623 に答える