目录
#include<iostream>
using namespace std;
struct Box {
double a;
char b;
};
class TEST {
Box b;
char c;
};
int main()
{
Box box;
cout << sizeof(box) << endl; //16
TEST st1;
cout << sizeof(st1) << endl; //24
return 0;
}
上面这个现象的出现就是由于采用了内存对齐,关于内存对齐,下面这篇文章比较好理解,大家速戳
内存对齐
关于好多课本上的一种常见写法
#include<iostream>
using namespace std;
typedef struct LNode {
int data;
struct LNode* next;
}*LinkList;
int main()
{
LinkList link = new LNode;
return 0;
}
这里的意思就是 typedef struct LNode * LinkList; 所以LinkList 和 LNode * 是一回事,二者等价
共用体它能存储不同的数据类型,但只能同时存储其中的一种类型。由于每次只能存储一个值,所以必须有足够大的空间类存储最大的成员,所以共用体的长度为其最大成员的长度
union id {
int a;
double b;
};
sizeof(id) 8
枚举类型
#include<iostream>
using namespace std;
int main()
{
//one,two,three被称为枚举量
enum bit {one, two, three, four};
bit mybit;
//mybit = 1; //错误写法
mybit = one;
//不能将int直接赋给枚举类,需要进行转换
mybit = bit(1);
cout << mybit << endl;
//mybit++;//错误写法
int a = two + 3; //这里将two转化为int数据 1
cout << a << endl;
//下面这里错误是因为 one+two都被转化为int进行计算,结果为1,但是1是int,然后不能赋值给枚举类型
//mybit = one + two;
//枚举量的值可以进行设置,如果不设置,第一个枚举量默认为0,后面的比前面的大 1
enum {red=1,blue=20,black=30};
return 0;
}