结构体

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
};

结构体


 向后对齐

结构体结构体