赋值从指针生成整数而没有C中的强制转换

时间:2011-09-04 21:01:55

标签: c

我有这个问题。这是我的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 个答案:

答案 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++])

通过在f​​or循环中递增p,您可以遍历数组s中的所有值

答案 2 :(得分:2)

* p i是unsigned char(引用指向unsigned char的指针)。

是指向char的指针(因为它是一个数组)。

所以你要指定一个指向unsigned char的指针。

我认为编译器会这样说,因为你是在没有强制转换的情况下从指针创建一个字符。