关于C语言的指针类型转换问题?

问题描述:

#include

int main()
{
unsigned int a = 0;
unsigned char p = (char *)&a;//有错
p[0] = 123;
p[1] = 111;
p[2] = 168;
p[3] = 192;
printf("%u\n", a);
return 0;
}
结果报错:error: invalid conversion from 'char
' to 'unsigned char*' [-fpermissive]|
我在想这样为什么不可以转换呢,

当然不能直接转了,一般都是unsigned char*p=(unsigned char*)(void*)a

unsigned int a = 0;
    unsigned char *p = (unsigned char*)& a;//有错
    p[0] = 123;
    p[1] = 111;
    p[2] = 168;
    p[3] = 192;
    printf("%u\n", a);
    return 0;

直接char不行吗?