2012-11-14 70 views
1

請幫我理解我在做什麼我的雙指針算術錯了。我知道我明確地做了不正確的事情,但是什麼?看看我標記的那一行,「壞指針」。我的直覺告訴我,這應該起作用,但我想不是。在C編程雙指針arithimethic,遍歷數組字符串

/* 
*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 
} 

}

回答

1

*++運營商具有相同的優先級,從右到左結合,因此行不工作解析如下:

*(*(stringArray++)); 

我實際上並不瞭解您的代碼,但由於解除引用操作符不起作用,所以這不可能是您想要的。想必你想這個代替:

(**stringArray)++; 
+0

感謝您的澄清,我的功能是有缺陷的,已被廢棄,但是我想要的代碼是(** stringArray)++,因爲我錯過了我的演講,所以很好知道。 –

1

你必須移動到下一個字符所以

使用

(*stringArray)++而不是**stringArray++

而且

searchPrefix++而不是*searchPrefix++

+0

我真的不知道雙指針是什麼,但不(* stringArray)++增加stringArray指向的值?或者我錯過了什麼? – Bbvarghe