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

石家庄网站快速排名如东网站建设

石家庄网站快速排名,如东网站建设,定制网站开发,域名空间做网站一#xff1a;背景 最近发现 C 中的类型初始化操作#xff0c;没有 {} 运算符搞不定的#xff0c;蛮有意思#xff0c;今天我们就来逐一列一下各自的用法以及汇编展现#xff0c;本来想分为 值类型 和 引用类型 两大块#xff0c;但发现在 C 中没这种说法#xff0c;默认… 一背景 最近发现 C 中的类型初始化操作没有 {} 运算符搞不定的蛮有意思今天我们就来逐一列一下各自的用法以及汇编展现本来想分为 值类型 和 引用类型 两大块但发现在 C 中没这种说法默认都是 值类型 二各种玩法一览 1. int 上的初始化首先看一下代码int main() {int i  { 10 };int j{ 10 };printf(i%d, j%d, i, j); }相比C#来说不带 的写法感觉还是怪怪的。。。接下来看下对应的汇编代码。int i  { 10 }; 00021825  mov         dword ptr [ebp-8],0Ah  int j{ 10 }; 0002182C  mov         dword ptr [ebp-14h],0Ah从汇编代码看就是一个简单的 栈赋值 所以在 int 上用 {} 完全没必要太伤键盘了。2. 数组的初始化继续看例子。int main() {int num[]  { 10,11,12 }; }这种写法中规中矩基本上 C 系列的语言都这样对于玩 C# 的我来说不陌生。。。不过人家默认是值类型C# 是引用类型从汇编代码中也能看的出来。int num[]  { 10,11,12 }; 009C1E95  mov         dword ptr [ebp-10h],0Ah   009C1E9C  mov         dword ptr [ebp-0Ch],0Bh   009C1EA3  mov         dword ptr [ebp-8],0Ch3. 结构体的初始化结构体大家都很熟悉直接上代码了。typedef struct _Point {int x;int y; } Point;int main() {Point point  { 10,20 }; }接下来看一下汇编代码。Point point  { 10,20 }; 00481825  mov         dword ptr [ebp-0Ch],0Ah   0048182C  mov         dword ptr [ebp-8],14h可以看到其实也是一组简单的赋值操作很方便。4. 类的初始化方便讲述先上代码class Location { private:int x;int y;int z; public:Location(int x, int y, int z) :x(x), y(y), z(z) {} };int main() {Location location  { 10,11,12 }; }接下来看下汇编代码是不是调用了 Location 的构造函数。Location location  { 10,11,12 }; 008D183F  push        0Ch   008D1841  push        0Bh   008D1843  push        0Ah   008D1845  lea         ecx,[ebp-14h]   008D1848  call        Location::Location (08D13A7h)可以看到确实调用了 构造函数那个 ecx 就是 location 的 this 指针。5. initializer_list 模板类C 中的 initializer_list 类可以接收 {} 初始化语法作为初始化操作这个有一点像 C# 的 param 可选参数接下来把上例的中构造函数改成 initializer_list 来接收代码如下class Location { public:int x;int y;int z; public:Location(initializer_listint list) {x  *(const_castint*(list.begin()));y  *(const_castint*(list.begin()  1));z  *(const_castint*(list.begin()  2));} };int main() {Location loc  { 10,11,12 };printf(loc.x%d,loc.y%d,loc.z%d, loc.x, loc.y, loc.z); }接下来看下汇编代码。Location loc  { 10,11,12 }; 00B9518F  mov         dword ptr [ebp-0F8h],0Ah   00B95199  mov         dword ptr [ebp-0F4h],0Bh   00B951A3  mov         dword ptr [ebp-0F0h],0Ch   00B951AD  lea         eax,[ebp-0ECh]   00B951B3  push        eax   00B951B4  lea         ecx,[ebp-0F8h]   00B951BA  push        ecx   00B951BB  lea         ecx,[ebp-0E4h]   00B951C1  call        std::initializer_listint::initializer_listint (0B913C5h)   00B951C6  mov         edx,dword ptr [eax4]   00B951C9  push        edx   00B951CA  mov         eax,dword ptr [eax]   00B951CC  push        eax   00B951CD  lea         ecx,[loc]   00B951D0  call        Location::Location (0B913ACh)从汇编代码看它首先做了 initializer_list 的初始化操作然后将弄好的集合丢到 Location 构造函数中反转过来大概就是这样。int main() {initializer_listint list  { 10,11,12 };Location loc  { list };printf(output: loc.x%d,loc.y%d,loc.z%d, loc.x, loc.y, loc.z); }哈哈是不是感觉 {} 在初始化方面无所不能好了本篇就聊到这里了。
http://www.yutouwan.com/news/167629/

相关文章:

  • 光效网站南宁建设集团招聘信息网站
  • 长沙网站制造吉林做网站多少钱
  • 阜阳商城网站建设电子商务网站建设规划的内容
  • 做资料分享网站有哪些广东网站开发搭建
  • 在vs做的项目怎么连接到网站枫叶主机 wordpress
  • 高唐建筑公司网站洛阳霞光seo网络公司
  • 公司网站建设专家做网站推广一年多少钱
  • 大连百姓网免费发布信息网站用jsp做的网站需要什么工具
  • 昆山汽车网站建设重庆免费建网站
  • 备案网站应用服务网站开发合同甲方的权利
  • 无需注册网站模板下载wordpress主题_
  • 创意网站交互推广普通话的手抄报怎么画
  • 网站建设招标文件范本网站建设分析魅族
  • 图库素材网站模板网站建设的方法步骤
  • 厦门高端网站建设济南哪里做网站
  • 学校信息化网站建设新手网站设计看哪本书
  • 文件传输协议登录网站美食网站设计规划书
  • 网站建设面板重庆市建设工程施工安全管理网官网
  • 电商网站建设案例自己建网站怎么做seo
  • 网站建设的学习方法为什么要域名备案
  • html5手机网站模板 下载裤子seo标题优化关键词
  • 厦门高端网站案例网站建设项目维护与评价书
  • 网站的经营方式服装html网站模板下载
  • 青岛找网站建设公司好wordpress o2o插件
  • 网站模板素材怎么用logo免费设计生成
  • 医院网站asp设计网站开发方案流程
  • 两个域名同一个网站做优化佛山顺德容桂做网站的公司
  • 自助建站实验报告做网站销售水果
  • 建设部网站 干部学院 一级注册建筑师培训 2014年福建省住房城乡建设厅网站
  • 重庆城乡建设部网站首页公司网站公众号维护怎么做