2011-09-04 33 views
-1

我对此有一个问题。这里是我的C代码的具体部分:赋值使得指针中的整数没有在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); 

现在我得到的消息 - 赋值使指针没有转换的整数。请帮助我。

+2

如果您告诉我们至极是有问题的行 – BlackBear

+1

你确实有与该代码_two_问题这将是有益的。第二个是使用无意义的变量名,这将使得从现在开始的六个月维护变得非常困难:-) – paxdiablo

+1

你的代码只是一团糟。为什么你会有这样一个难以理解且容易出错的“陈述”,滥用副作用?清理它,看看你的错误是否持续,然后可能会再次回来,并提供更详细的错误报告。 –

回答

2

s是char类型的数组,您将其分配给取消引用的p,它是“无符号字符”的指针。无铸造s你不能做到这一点:

,你可能想要的是代码:

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

for循环您完成所有的值去阵列s

+0

感谢兄弟。那工作:) – Doridro

2

* PI中一个无符号字符(引用一个指向unsigned char的指针)。

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

所以你正在分配一个指向unsigned char的指针。

我会假设编译器说这是因为你从一个没有强制转换的指针发出一个字符。

4

更改为。放下*所以你会正确地分配给char *

for(*p = s; *p; ++p, mov += m[L++]) 
    ^
+0

准确地说:你正在使用'p'指针遍历's'数组:从's'开始(p = s)开始,每次迭代将指针向右移动一次++ p)直到你到达一个空指针('* p'变成false)。 –

相关问题