p = (unsigned short *)fb_base;
for (x = 0; x < xres; x++)
for (y = 0; y < yres; y++)
*p++ = 0xf800;
......;
}
疑惑于(unsigned short*)fb_base是个指针,fb_base通过类型转换把unsigned int转换成 unsigned short赋值给p?
当p的类型是float*,int*,double*时候,fb_base的类型可以是short,反之,当p的类型是short*,fb_base的类型不能是float,double,(int可以)
这是何解?
#include<iostream>
using namespace std;
float s = 1000.123;
short * p =NULL ;
(unsigned short *)fb_base; 就是将 fb_base 地址中存放的内容看做是 unsigned short 类型,当然里面存放的可能不是真正的 unsigned short 类型,这时用强类型转换 (unsigned short*) 明确指示一下,即将 fb_base中的内容看做是 unsigned short 内容了,之后就可以将其赋值给其它相应类型的变量了,这样就可以避免了编译器的报错,编译器允许你在不同类型之间相互赋值,但要求你要明确声明一下,编译器只对语法负责,不对结果负责。因为只有你能确认内存中的数值是不是可转化的。