小白,求问,如下图?

小白,想问一下定义*b那一行,为什么等于号后面的(char*)后面能跟&a,地址能做指针变量吗,也想问一下(char*)去括号有没有什么影响,谢谢了?

#include <stdio.h>

int main()
{
        int a = 0x1234;
        char *b = (char *)&a;

        if (*b == 0x12)
        {
                printf("大端!\n");
        }
        else
        {
                printf("小端!\n");
        }

        return 0;
}

char *b正常情况下是指向char类型变量的指针,a是int类型,你在给指针赋值时,指针指向的应该是一个地址,所以是&a,因为a和b的类型不同,所以要进行格式强制转换,(char *)是强制转化成char *类型,括号不能去掉