2016-06-20 104 views
0

當我調用此函數時,即使正在使用它,也會收到錯誤。有人可以解釋:遞增指針時未使用表達式結果

pointers.c:30:5: warning: expression result unused [-Wunused-value] 
    *a++; 
    ^~~~ 

pointers.c:39:9: warning: expression result unused [-Wunused-value] 
     *s++; 
     ^~~~ 

pointers.c:40:9: warning: expression result unused [-Wunused-value] 
     *b++; 
     ^~~~ 

pointers.c:48:7: warning: expression result unused [-Wunused-value] 
     *s++; 
     ^~~~ 
int strend(char *s, char *b){ 
    char *temp = b; 
    while(*s != '\0'){ 
    if(*s == *b){ 
     while(*s == *b && *b != '\0' && *s != '\0'){ 
     *s++; 
     *b++; 
     if(*b == '\0') 
      printf("wrong"); 
     printf("compare: %c, %c\n", *s, *b); 
     printf("equal: %d\n", *s == *b); 
     } 
    } 
    else{ 
     *s++; 
    } 
    printf("check %c, %c\n", *s, *b); 
    if(*b == '\0' && *s == '\0'){ 
     return 1; 
    } 
    else{ 
     b = temp; 
    } 
    if(*s == '\0') 
     printf("bazinga"); 
    } 
    return 0; 
} 
+1

警告是關於毫無意義的解除引用,而不是增量。你爲什麼取消引用指針? '* s ++'中的'*'運算符是什麼? – AnT

回答

4

取消引用指針太多,不僅增加了。該解除引用將爲您提供舊指針指向的值(增量前),但不使用該值,從而導致警告。

簡單的解決方案?請勿使用解除引用運算符*

+3

換句話說,'* p ++'解析爲'*(p ++)'。 – melpomene