强制类型转换(int*)

2025-03-11 00:38:03
推荐回答(3个)
回答1:

0xB8000000本身是个16进制的数值
pt=0xB8000000//把一个数值赋给地址,显然是不可以的

(int*),就是把一个值强制转换为一个int型的指针,也就是说把这个值转换为一个地址,这个地址指向的内容是int型的值

pt=(int*)0xB8000000//就是把0xB8000000转换为int型的指针,并把该指针(地址)赋给pt

回答2:

想想最根本的区别,可以这样考虑,你给我个地址0x...
这是个常量,我根本不知道你这个地址指向多少个内存单元,它可以表示int,char ,float的首地址,还可以表示数组的首地址,然后我想用这个运算*(0x...)那编译器就无法知道,你想取的的内存区域。

int *pt=(int*)0xB8000000;

这里是赋值运算,要求两边指针类型一致,

回答3:

int* 表示一个指针,指针指向一个地址,你的那个0xB8000000或是别的,都可以强制转换成地址.