当前位置: 首页 > wzjs >正文

口碑好的扬州网站建设关键词排名软件官网

口碑好的扬州网站建设,关键词排名软件官网,首饰设计网站推荐,制作网站代码吗目录 52.1 类型双关 52.2 union 52.1 类型双关 将一个int类型转为double类型,有如下方式 int main() {int a 5;double b a;//隐式类型转换double c (double)a;//显示类型转换double d *(double*)&a;//类型双关:将类型int的内存操作为double…

目录

52.1 类型双关 

52.2 union


52.1 类型双关 

 将一个int类型转为double类型,有如下方式

int main() {int a = 5;double b = a;//隐式类型转换double c = (double)a;//显示类型转换double d = *(double*)&a;//类型双关:将类型int的内存操作为double//打印a 5 b:5 c:5 d:-9.25596e+61std::cout << "a " << a << " b:" << b << " c:" << c << " d:" << d << std::endl;std::cin.get();
}

可以看到,类型双关的操作先把一个int类型指针转为double类型指针,然后解引用。结果是在原来的int内存之后继续了4个字节,然后获取整个内存,结果打印的地址并不理想,有可能造成崩溃,这样的类型双关操作不安全。下面演示安全的类型双关操作:

#include <iostream>
#include <thread>
#include <mutex>
#include <vector>struct Entity
{int x, y;int* getStartPosition(){return &x;}
};int main() {Entity e = { 1,2 };//方式一int* position = (int*)&e;//结构体转为数组std::cout << position [0]<< ","<<position[1] << std::endl;//打印1,2//方式二int* position2 = e.getStartPosition();std::cout << position2[0] << "," << position2[1] << std::endl;//打印1,2int y = *(int*)((char*)&e + 4);//通常使用y = e.y;来访问std::cout << y << std::endl;//打印2std::cin.get();return 0;
}

可以看到我们能够自如的操作c++的内存,同一块内存进行不同类型之间的转换,这就是类型双关。需要做的就是将原来的指针转换为另一个类型的指针(结构体e的指针转化为数组的起始指针),然后作为另一种类型去访问它(作为数组类型去访问)。

52.2 union

union关键字使得不同类型成员变量共享同一块内存,这运用了类型双关的概念

//
//  main.cpp
//  HelloWorld
//
//  Created by  on 2024/11/28.
//#include <iostream>struct vector2
{float x, y;};
struct vector4 {union {struct{float x, y, z, w;};struct{vector2 a, b;//a对应x,y;b对应z,w};};//union中的各个成员占用同一块内存
};
void printVector2(const vector2 &v)
{std::cout << v.x << "," << v.y << std::endl;
}
int main(int argc, const char * argv[]) {vector4 v = { 1.0f,2.0f,3.0f,4.0f };printVector2(v.a);printVector2(v.b);v.z = 5;std::cout <<  "-------------" <<  std::endl;printVector2(v.a);printVector2(v.b);
}

打印结果如下: 

 

http://www.dtcms.com/wzjs/272551.html

相关文章:

  • ui设计培训班的学费一般是多少钱西安seo管理
  • 做网站找模版好吗市场营销七大策略
  • 网站策划书的撰写免费seo刷排名
  • 如何做好网站优化武汉官网优化公司
  • 济南网站建设富库网络宁波网站推广找哪家
  • 建设银行流水查询网站推广互联网推广
  • 做网站建设的合同范本开源cms建站系统
  • 如何再网站上做免费广告词千峰培训出来好就业吗
  • 网站有哪些类型企业网站seo优化外包
  • 北京移动网站建设淘宝站外引流推广方法
  • 深圳网站建设 独占网络网站在线优化检测
  • 禁止粘贴的网站盐城seo网站优化软件
  • 建网站需要怎么做网站首页制作网站
  • 网站该怎么做链接百度百家官网入口
  • 怎么用ip地址做网站宁波网站建设网站排名优化
  • 威海建设局网站楼盘信息公布搜索关键词排名查询
  • 海豚一键做淘宝网站大连企业网站建站模板
  • 用html怎么做网站尾部如何制作自己的网页链接
  • 专业的网站建设与优化seo发帖软件
  • 网站建设套餐2345网址导航官网下载安装
  • 专题网站建设方案佛山网站建设模板
  • dw动态网站怎么做搜索框百度授权代理商
  • 电子方案网站建设方案神秘网站
  • 1688seo优化是什么热狗网站排名优化外包
  • 国内品牌设计公司seosem是什么职位
  • 深圳网站建设公司佰达竞价推广账户竞价托管费用
  • 自己做的网站如何实现下载文件关键词排名网络推广
  • 新平台推广赚钱优化网站标题和描述的方法
  • 全国做网站最好的公司深圳seo优化seo优化
  • 浙江信息港网证书查询seo整站怎么优化