我有这个问题。这是我的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);
现在我收到了消息 - 赋值在没有强制转换的情况下从指针生成整数。请帮帮我。
答案 0 :(得分:4)
更改for。放下*
,以便正确分配到char *
:
for(*p = s; *p; ++p, mov += m[L++])
^
答案 1 :(得分:2)
s
是一个char类型的数组,你将它分配给解除引用的p
,它是'unsigned char'的指针。如果不投射s
:
您可能想要的代码是:
for(p = (unsigned char *)s; *p; ++p, mov += m[L++])
通过在for循环中递增p
,您可以遍历数组s
中的所有值
答案 2 :(得分:2)
* p i是unsigned char(引用指向unsigned char的指针)。
是指向char的指针(因为它是一个数组)。
所以你要指定一个指向unsigned char的指针。
我认为编译器会这样说,因为你是在没有强制转换的情况下从指针创建一个字符。