Когда мы инициализируем тип данных char *, а когда нет?

Во-первых, посмотрите на следующий простой код:

char str[80] = "This is - my text - for test";
const char s[2] = "-";
char *token;
token = strtok(str, s);

while (token != NULL) {
printf(" %s\n", token);
token = strtok(NULL, s);
}

Функция strtok() возвращает тип данных char* и, как вы видели, мы создали переменную с именем token эта переменная не инициализирована.

Теперь посмотрим на следующий код:

char *buff;
int num = 500;
sprintf(buff, "%d", num);

Результатом предыдущего кода является ошибка uninitialized local variable 'buff',
У меня вопрос, почему в первом коде не возникает никаких проблем, в то время как во втором коде произошла ошибка?

-2

Решение

Потому что в первом фрагменте вы делать инициализировать переменную tokenпо телефону strtok и присваивание результата вызова переменной.

Во втором примере вы оставляете переменную buff неинициализированный.

Вы можете инициализировать локальную переменную с фактической инициализацией при определении. Или же присваивая переменной в другом месте. Важно то, что вы делаете эту инициализацию или присваивание до Вы используете переменную любым другим способом.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]