C语言中的结构体基本介绍


C语言提供了结构体用来提高表示数据的能力,它能让你创造新的形式。
需要掌握3个部分:
1、为结构体建立一个格式或样式
2、声明一个适合该样式的变量
3、访问结构变量的各个部分(成员member或字段field)

1. 结构体类型定义

结构类型定义描述了一个结构体的组织布局。不分配实际内存。

#define MAXTITL 41      // 书名的最大长度
#define MAXAUTL 31      // 作者名字的最大长度

// 普通定义,需要结合struct关键字使用
struct book{
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
};

//typedef定义,创建别名,可以省略struct关键字
typedef struct {
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
}book;

2. 结构体变量

2.1 声明

结构体变量声明是基于已定义的类型创建具体变量(类似根据图纸造房子),此时会分配内存。一般有三种方式:
1、使用已经定义的结构体类型模板

struct book p;		// 使用普通定义的类型(需写struct)
book p;				// 使用typedef定义的类型(无需struct)

2、定义结构体类型的时候进行变量声明

// 普通定义,需要结合struct关键字使用
struct book{
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
}p;

3、直接声明匿名结构体变量(很少用,无法复用类型)

struct {
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
}p;

2.2 初始化

主要有两种基本的初始化方式。
1、顺序初始化,

struct Point {
    int x;
    int y;
};

// 初始化方式1:按顺序初始化所有成员
struct Point p1 = {10, 20};

// 初始化方式2:部分初始化(C89标准支持,未指定的成员自动初始化为0)
struct Point p2 = {5};  // 等价于 {5, 0}

2、使用初始化器。
C99和C11为结构体提供了指定初始化器

// 初始化方式3:通过成员名指定初始化(C99及以后)
struct Point p3 = {.y = 30, .x = 20};  // 顺序可乱,结果:x=20, y=30

// 初始化方式4:混合使用(先顺序,后指定)
struct Point p4 = {1, .y = 2};  // x=1, y=2

2.3 访问结构成员

结构体使用成员运算符(.)访问结构体中的成员。

printf("p3:(x:%d, y:%d)", p3.x, p3.y);	//输出:p3:(x:20, y:30)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值