可疑指针转换

时间:2014-01-10 07:46:11

标签: turbo-c

我在这里遇到了可疑的指针转换错误。这个错误可能是什么原因?

我还将code[]数组全局初始化为int *code[128]={0};

void encode(const char *s, int *out)
{
    while(*s)
    {
        out=code[*s];
        out+=strlen(code[*s++]);   //this is where i got the error.
    }
}

1 个答案:

答案 0 :(得分:0)

当您指定具有不同类型地址的特定类型指针变量时,这种类型的自动类型转换称为可疑类型转换。

strlen需要const char *,而int * code [128]表示代码是int *的数组,因此code [* s ++]是一个int *。

当int *提供给const char *时,会出现此错误。

通常提供指向strlen的int *指针不是一个好主意,因为strlen将在字节为'\ 0'时结束。你很有可能在4字节int中有0。例如,整数3将具有3个字节的0和1个字节的3。