- 结构体
- 概念
一类相关事物属性的集合,是一种自定义的数据类型
- 1 定义
struct 结构体名
{
属性1;
属性2;
......
属性n;
};
描述一个人的姓名、年龄
struct people
{
char name[20];//姓名
int age;//年龄
};
定义了一个结构体,结构体的数据类型为(struct people)struct 结构体名
- 2初始化
int a =10;//初始化 数据类型 变量名 = 初值;
int a;
a = 10;//赋值
数据类型 变量名 = {............};
struct people pe = {“zhangsan”,18};
1.2
访问
- 通过结构体变量来访问
1 #include<stdio.h> 2 struct student 3 { 4 char name[20]; 5 int age; 6 }; 7 int main(void) 8 { 9 //初始化一个结构体变量 10 struct student stu = {"zhangsan",18}; 11 printf("name = %s\n",stu.name); printf("age = %d\n",stu.age); 22 return 0; 23 }
-
通过结构体指针来访问
1 #include<stdio.h> 2 struct student 3 { 4 char name[20]; 5 int age; 6 }; 7 int main(void) 8 { 9 //初始化一个结构体变量 10 struct student stu = {"zhangsan",18}; 11 //定义一个结构体指针 12 //数据类型 结构体变量名 13 struct student *p = NULL; 14 p = &stu; 15 //访问 16 //结构体变量名.成员 17 printf("name = %s\n",(*p).name); 18 printf("age = %d\n",(*p).age); 19 //结构体指针变量去访问 20 printf("name = %s\n",p->name); 21 printf("age = %d\n",p->age); 22 return 0; 23 }
指针变量名->成员
整型指针:指向整型的指针
数组指针:指向数组的指针
结构体指针:指向结构体的指针
数据类型 *指针变量名;
struct people * p = NULL; sizeof(p) = 4byte
-
- 字节对齐
一次性分配多少个字节
自然对齐方式(32OS):
int:4字节对齐
short:2字节对齐
float:4字节对齐
double:占8个字节,分配的时候还是按4字节分配,分配两次
char:1字节对齐
选成员中最大的那个对齐