类型转换 类型双关
int a=9;
double value=a;//有隐式转换(在不损失数据的情况下转换类型)
value的内存
int main()
{
int a = 9;
double value = *(double*) & a;//把一个int型指针转换成一个double指针然后解引用
//实际上是在外面的int之后 继续四个字节 然后value获取了这部分内存(四个字节加四个字节)这不是我们
//用来存放整数a的内存 我们已经把内存复制到一个新的double块了 是安全的写入也是在自己的内存中,但读了不属于我们的内存
//目的是让把a的地址也当成double看
}
a的地址
value的地址
不想创建变量,还想把int当double访问
double& value=*(double*) & a;
若是写value=0.0;这很危险因为实际要写8个字节,但内存中只有4个字节分配给你
struct Entity
{
int x,y;
};//从内存角度看 可以吧这个结构体看成一个整形数组不用通过.x .y提取数据
int main()
{
Entity e={3,4};
int position=*(int*)&e;
std::cout<<position[0]<<","<<position[1]<<std::endl;
}
struct Entity
{
int x,y;
int* getposition()
{return &x;}
};//从内存角度看 可以
int main()
{
Entity e={3,4};
int* position=e.getposition();
std::cout<<position[0 ]<<","<<position[1]<<std::endl;
}
static_cast<类型>
静态类型转换
double a=5.23;
double b=(int)a+3.2//结果是8.2
double s=static_cast
dynamic_cast
执行一个检查,转换不成功会返回NULL;
reinterpret_cast
把这段内存重新解释成别的东西
用cast的好处是 编译器会做检查 不行的会报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端