1、基本概念及使用
数组 :只能存同一种数据类型的数据
结构体:可以存各种不同类型的数据
结构体定义:用 struct 关键字
结构体变量定义:定义的时候要带上 struct 关键字
结构体成员的使用:1、变量使用 . 引用成员,指针使用 -> 引用成员
#include <stdio.h>
#include <string.h>
// 1、只定义结构体类型
struct Student1
{
char ch;
int id;
char name[20];
};
// 2、定义结构体类型的同时定义几个变量
// s2, s3 是结构体变量
struct Student2
{
int a;
int b;
}s2, s3;
// 3、定义结构体的时候可以省略结构体名称
struct
{
int c;
int d;
}s4 = {1,2}, s5 = {3,4};
int main()
{
// s 就是一个 Student1 类型的变量,s 内部有 ch、id、name 成员
struct Student1 s;
s.ch = 'A';
s.id = 10;
strcpy(s.name, "小明"); // 字符串拷贝,不能直接赋值
// 结构体指针
struct Student1 *ps = &s;
printf ("ch = %c, id = %d, name = %s\n", ps->ch, ps->id, ps->name);
s2.a = 10;
s2.b = 20;
s3.a = 40;
s3.b = 50;
// 结构体变量的初始化
struct Student1 s = {'A', 10};
printf ("ch = %c, id = %d, name = %s\n", s.ch, s.id, s.name);
return 0;
}
2、结构体内存对齐规则
1、结构体成员变量所在地址必须能被该变量类型所占空间大小整除
2、结构体为成员变量分配空间,每次是按照最大类型的大小进行分配的
3、空间不够的时候再分配,够的时候不再分配
4、操作系统有默认对齐系数,对于现在的机器,大部分系数都是8,以前的系数是4。每次分配空间的大小大于 默认对齐系数,按照系统的来对齐,不大于,按照实际的来(取小值)