
c/c++语音
申庆胜
这个作者很懒,什么都没留下…
展开
-
[c++11]我理解的右值引用、移动语义和完美转发
c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。左值、右值C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值。看见书上又将右值分为将亡值和纯右值。纯右值就是c++98标准中右值的概念,如非引转载 2020-12-02 11:15:11 · 251 阅读 · 0 评论 -
关于返回结构体的函数
【前言】写作本文,源于最近回复的《汇编中函数返回结构体的方法》一文。在网络上也已经有一些相关文章和相关问题,有的文章已经给出了一部分结果,但总体而言还缺少比较重要的结论。本文以分析 VC6 编译器,32 位架构为主来重复性分析这个话题。 (一)不超过 8 bytes 的小结构体可以通过 EDX:EAX 返回。 本文的范例代码取材于 《汇编中函数返回结构体的方法》一文,并在此基础上进行修改和试验。要研究的第一份代码如下,定义一个不超过 8 bytes 的小结构体,不超过 8 by...原创 2020-12-01 16:22:42 · 3705 阅读 · 0 评论 -
汇编中函数返回结构体的方法
代码生成,函数的返回值是个问题,如果返回值是简单类型,如int, char等,一个字节可以容纳,那编译器的做法是将值直接存在eax寄存器中.代码为证c代码: #include <stdio.h> intadd(inta, intb){ returna + b; } intmain(){ inta = add(2,3); return0; } gcc ...原创 2020-12-01 16:21:13 · 818 阅读 · 0 评论 -
C/C++ struct 结构体定义 用法详解
在C语言中,定义一个结构体类型要用typedef :typedef struct point { int x; int y;}Point;在声明变量的时候就可以:Point p1;如果没有typedef, 如:struct point { int x; int y;};在声明变量的时候就必须用:struct point p1;Point是struct point的别名。也可以省去point,如下:typedef struct { int x;转载 2020-11-23 10:41:03 · 935 阅读 · 1 评论