Что означает «Предупреждение: возвращение делает целое число из указателя без актерского состава» в C?

StackOverflow https://stackoverflow.com/questions/788752

Вопрос

Я пишу простую функцию в 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'

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top