Почему мои значения переменных удаляются? - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь извлечь подстроки в C. У меня есть вход для моей функции строки (команда char []), и я вынимаю ее части.После отладки моего кода я замечаю, что значения (условие и накопление) стираются, когда я достигаю более поздних частей функции.Почему это?(См. Код ниже)

int multiply(char command[]) {
    char condition[5];
    memmove(condition, command, 4);
    condition[3] = '\0';
    char accumulate[2];
    memmove(accumulate, &command[4], 1);
    accumulate[2] = '\0';
    char set[2];
    memmove(set, &command[5], 1);
    set[2] = '\0';

    return EXIT_SUCCESS;
}

В соответствии с отладчиком, условие стирается, когда задан набор, а накопление стирается при EXIT_SUCCESS.

1 Ответ

0 голосов
/ 27 мая 2019

condition удаляется, когда определено set, потому что вы не используете condition после того, как вы определили set, поэтому ваш компилятор оптимизирует, сохраняя их в одном месте.

accumulate стирается при возврате из функции, потому что это локальная переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...