关于(*(char *)&i)的问题!(语言-c++)

((char )&i)的两个问题
1.取i的内存地址的第一个数判断大小端存储,为什么要先转换为char
类型,如果不转换,默认是什么
2.第一个星号
是什么意思,关于指针这里有点混乱,char后面的星号与前面第一个星号的真正区别是啥,虽然知道第二个星号是指针类型,望指点,谢谢

1.不转换i是个int,转换成char才能取到一个字节呀
2.星号在c语言里含义太多了,它在a*b中代表乘法符号,在char *中代表指针类型,char **是二级指针,*p是指针p解地址一次,**p是解地址2次,如果放到sql里它是通配符,放到正则表达式里它也是通配符

1.在 C++ 中,如果你想要访问某个变量的内存地址,你必须先将它转换为指针类型。例如:

int i = 10;
int *p = &i;

上面我们使用了取地址符 & 来获取变量 i 的内存地址。但是,如果我们直接使用取地址符 & 获取变量 i 的内存地址,我们将得到一个整型指针,即指向整型变量的指针。但是,在这个例子中,我们需要获取字符类型的指针,因此我们需要将变量 i 转换为字符类型。我们使用显式转换将变量 i 转换为字符类型,即:

((char)&i)

处理过后就得到了一个字符类型的指针,即指向字符类型的指针。

2.第一个星号是什么意思?
在 C++ 中,星号 * 用于表示指针。例如:

int i = 10;
int *p = &i;

上面 p 是一个整型指针,即指向整型变量的指针。回到你的代码例子中,我们已经获取了一个字符类型的指针,即指向字符类型的指针。

1、一般来说,转换为char*类型是因为需要一个字节的数据。如果不转换,你的变量i是什么类型,就是什么类型的指针。
2、(char *)这个星号代表指针类型,这是一个char 指针,第一个号是 取值符 表示将后面跟着的指针变量所指的地址中的值取出

望采纳!!点击回答右侧采纳即可采纳!!!
1.(char)&)的意思是将i的地址转换为char类型的指针,并取这个指针所指向的内存中
的第一个字节的值。这么做的目的是为了判断当前系统的字节序是大端存储还是小端存
储。在计算机中,数值的字节序可能是大端存储或小端存储。在大端存储的系统中,高位
字节存储在低地址处,而在小端存储的系统中,高位字节存储在高地址处。
如果不转换为char类型,那么编译器会将&i直接解释为int
类型的指针,并取这个指针所
指向的内存中的第一个字节的值。但是由于在大端存储的系统中,整数的低位字节存储在低
地址处,因此这样做并不能正确判断字节序。
2.第一个星号()表示指针类型,它的含义是将(char)&i解释为char类型的指针。而后
面的星号()表示取指针所指向的内存中的值。
因此,(char)&j的意思是:将i的内存地址转换为char
类型的指针,然后取这个指针所
指向的内存中的第一个字节的值。