增加指针时未使用的表达式结果

Aid*_*llo 1 c pointers

当我调用这个函数时,即使它们正在被使用,我也会收到错误消息。有人可以解释一下:

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++;
      ^~~~
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 5

您也取消引用指针,而不仅仅是增加它。该取消引用将为您提供旧指针(在增量之前)指向的值,但您不使用该值,从而导致警告。

简单的解决方案?不要使用解引用运算符*

  • 换句话说,`*p++` 解析为 `*(p++)`。 (4认同)