вычисленное значение не используется - PullRequest
1 голос
/ 12 марта 2012

Как это исправить? Почему компилятор заявляет об этом, если я использую переменную в других частях кода?

void replace(char ** src, const char s, const char replace) {
   while(*(*src) != '\0') {
      if(* (*src) == s) {
         news[size] = replace;
      } else {
         news[size] = *(*src);
      }
      *(*src) ++; // the error line 
      size++;
   }
   *src = news;
}

Ответы [ 3 ]

4 голосов
/ 12 марта 2012

Когда вы делаете *(*src)++, вы в основном разыменовываете src, затем делаете постфиксное увеличение для указателя, затем разыменовываете указатель.Это ошибка.Вы не используете окончательное значение, поэтому компилятор предупреждает вас.

То, что вы действительно хотите, это (**src)++;то есть разыменование дважды, а затем увеличение.

0 голосов
/ 12 марта 2012

Конкретные флаги вашего компилятора не позволяют разыменовывать переменную без ее использования (присваивая ее чему-либо). Проблема в том, что вы разыменовываете указатель без использования его значения.Это можно исправить следующим образом:

Если вы пытаетесь увеличить указатель, просто сделайте это:

(* src) = (* src) + 1;

Если вы пытаетесь увеличить конечное значение, сделайте следующее:

(** src) = (** src) + 1;

0 голосов
/ 12 марта 2012

Двойная разыменование очень сбивает с толку;Вы должны упростить указатели:

char *srcp = *src;    // Or whatever type it is.
while (*srcp != '\0')
{
    if (*srcp == s)
    {
        news[size] = replace;
    }
    else
    {
        news[size] = *srcp;
    }
    srcp++;
    size++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...