C语言结构体的学习

本文介绍了C语言中结构体的声明、初始化、相关操作及应用场景,包括成员访问、结构体间赋值等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    问题描述:C语言中的结构体可以构造复杂的数据类型。例如有时函数需要传递的参数太多,此时可以考虑用结构体作为参数传入。C语言中的结构体利用函数指针和一般变量可以模拟面向对象语言编程中的属性和方法。结构体的使用非常灵活,下面记录一些结构体使用的较为基础的内容。结构体在其他一些语言中有时被称为记录、字段。
    声明:在花括号中间,每个结构代表一个作用域,可以防止命名冲突,
struct {
    int number;
    int *ptr;
    char name [NAME_LEN + 1];
}part1,part2;
    如果常用到,可以使用类型定义这样声明,
typedef struct {
    int number;
    int *ptr;
    char name [NAME_LEN + 1];
}part_t;
part_t  part1,part2;
    还有一种是结构标记声明,
struct part{
    int number;
    int *ptr;
    char name [NAME_LEN + 1];
};
struct part  part1, part2;
    初始化:可以在声明的同时初始化,如
part_t  part1 = {22, &item, "Good boy"};  // 这种初始化和数组很相似。
    也可以指定初始化:
part_t  part2 = {.number=33, .ptr=&item1, .name="Another boy"};
    相关操作:
    (1)成员访问,用“.”操作符,如part2.number = 25;
    (2)结构体间赋值,如“part2 = part1;”,直接将结构体part1的内容赋值给了part2,但数组中“array1 = array2;”是不允许的。如果要对数组赋值,可以利用结构体的这个特性,将数组放入结构体中,然后对结构体赋值,则包含在结构体中的数组也会跟着被赋值了。
    (3)作为函数参数传入或返回类型的结构体数据,可以考虑用指针来实现(当然直接用结构体传值是可以的),但是这样做可以避免结构体包含存储空间较大造成副本拷贝需要的空间占用,另外在文件操作中,打开一个文件进行操作,打开文件函数返回的就是一个结构体指针,对该文件的操作用指针即可,可以避免文件副本的重复拷贝。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技塑未来-苏导

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值