结构体
1.定义(struct):c语言中,不同类型数据的组合
2.struct Student//属性
{
int num;
int age;//不能赋予其初值
char *name;
}stu1;//在声明的同时定义变量
也可以先声明类型,后定义变量 struct Student stu1
3.c语言中不支持定义空的结构体
c++中空的结构体大小为1;
4.赋值
int main()
{
stu1.num = 12;
stu1.name = "Tom";
stu1.age = 18;
printf("学号是%d\n,姓名是%s\n,年龄是%d\n",stu1.num, stu1.name, stu1.age);
return 0;
}
5.struct A
{
int a;
char ch;
}Aa;
struct B
{
int a;
struct A *b;
};
int main()
{
struct B Bb;
Bb.a = 10;
Bb.b->a = 100;//指向符用的时候,取决于前面的操作数是否为指针类型
Bb.b->ch = 'a';
6.typedef,#define,const区别
typedef 给类型取新的别名,有类型检查。编译的时候处理。
typedef int INT; typedef int Arr[10]; typedef int (*Pfun)(int,int);
#define 只是做了个简单的替换,无类型检查。在预编译的时候处理。
const是在编译运行阶段展开,在编译的时候确定其值。
7.内存对齐
向前对齐
struct D
{
char a;//1
char b;//1
short c;//2
int d;//4
};
struct E
{
char a;//1+1
short c;//2
char b;//1+3
int d;//4
};
向后对齐