Назначение делает целое число из указателя без приведения в C - PullRequest
0 голосов
/ 05 сентября 2011

У меня проблема с этим.Вот конкретная часть моего кода C:

unsigned char *p;
char s[1048];
int m[1048], r[2];
int e = 0, L = 0, mov = 0, ri, i;
for(*p = s; *p; ++p, mov += m[L++])
       m[L] = min(*p - 'A', 'Z' - *p + 1);

Теперь я получил сообщение - назначение делает целое число из указателя без приведения.Пожалуйста, помогите мне.

Ответы [ 3 ]

4 голосов
/ 05 сентября 2011

Изменить для. Отбросьте *, чтобы правильно назначить char *:

for(*p = s; *p; ++p, mov += m[L++])
    ^
2 голосов
/ 05 сентября 2011

* p i беззнаковый символ (отсылка указателя на беззнаковый символ).

s - указатель на символ (так как это массив).

Итак, вы назначаете указатель на неподписанный символ.

Я бы предположил, что компилятор говорит это, потому что вы делаете символ из указателя без приведения.

2 голосов
/ 05 сентября 2011

s - это массив типа char, вы присваиваете его разыменованному p, который является указателем на unsigned char.Вы не можете сделать это без приведения s:

Код, который вам, вероятно, нужен:

for(p = (unsigned char *)s; *p; ++p, mov += m[L++])

, увеличивая p в цикле for, через который вы проходите все значения вмассив s

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