Что означает «Предупреждение: возвращение делает целое число из указателя без актерского состава» в C?
-
16-09-2019 - |
Вопрос
Я пишу простую функцию в C, цель которого состоит в том, чтобы взять 6 -битный номер, выработать первые 3 бита и основываясь на этом, вернуть «r», «w» или «o».
Однако, когда я компилируюсь, я получаю это предупреждение: «Возврат делает целое число из указателя без актеров». Затем, когда я запускаю программу, я обнаружил, что функция возвращает странного персонажа, который определенно не является одним из трех, которых я ищу.
Что здесь происходит? Заранее спасибо.
Вот моя функция:
char
readorwrite(int opcode)
{
if (opcode >> 3 == 4) {
return "r";
} else if (opcode >> 3 == 5) {
return "w";
} else {
return "o";
}
}
Решение
Проблема в том, что «r», «w» и «o» являются константами струны, что означает, что их фактический тип - char [] или char*. Это означает, что ваша функция фактически возвращает указатель S строке с нулевым уровнем. Для отдельных символов вы должны использовать «r», «w» и «o» вместо этого.
Другие советы
Вы возвращаете а const char *
, т.е. указатель на место в памяти, где строка «o» хранится, когда вам следует возвращать символ 'o'