1.声明

eg:

一定情况下,标签名也可以省略
2.自引用
正确的使用方法


通过解引用符号来正确使用,错误的方法常常漏掉解引用符号
3.定义和初始化

4.内存对齐
下面我们先看个例子


那它为什么是12呢?别急,咱们一步步看下去
首先,咱们要熟悉熟悉结构体的对齐规则

第一点,这里int是四个字节,所以从0开始,一直到3,这是a所占的,b c一样
第二点,int a 4 8 4 char b 1 8 1 int c 4 8 4 比较,取较小值
第三点,然后要从整数倍开始,4是1的倍数,所以b就从这里
然后 8是4的倍数 c就从这里往下数四个然后
12为最大对齐数的整数倍,所以符合(最大对齐数为4)

所以,答案就为12
特别说明嵌套的话就看最大对齐数,然后依次往下数,就比如我上面举例的这个从4的整数倍往下数12个
5.传参

print1与print2相比,首选print2。
因为函数传参是需要参数压栈会有时间和空间上的系统开销
如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,会导致性能下降
所以,结构体传参时要传结构体地址
文章详细解释了C++中内存对齐的规则,包括结构体成员的排列方式以及为何是12个字节的原理。同时,讨论了函数传参时,特别是结构体作为参数时,传地址相对于直接传值的优势,以避免大结构体导致的性能下降。
1289

被折叠的 条评论
为什么被折叠?



