18.从零开始学习C语言--结构体

为什么需要结构体?

为了表示一些复杂的事物,而普通的基本类型无法满足实际需求,如存储全校所有学生的性别,年龄,成绩,班级。。。。。。

什么叫结构体?

把一些基本类型组合在一起形成的一个新的复合数据类型。

如何定义一个结构体(三种)?

struct Student
{
    int avg;
    float scorr;
}

struct Student
{
   int avg;
   float scorr;
}std;

struct
{
   int avg;
   float scorr;
}std;

第一种只定义了一种数据类型,在要使用这个数据结构时,再定义变量;

而二和三直接定义了变量,只能定义一次,不方便以后再定义同一种数据结构的变量,所以推荐使用第一种。

结构体变量的赋值和初始化:

同数组一样,只有在初始化时,才有连续赋值, 定义之后赋值的话只能单独赋值;

struct Student
{
   int avg;
   float scorr;
}

struct Student st1;
st1.avg = 80;
st1.scorr = 6.6;
如何使用结构体变量中的成员(两种方式):

1、结构体变量名.成员名

2、指针变量名->成员名

指针变量名->成员名 表示指针所指向的结构体变量中的成员,等价于(*指针变量名).成员名,等价于结构体变量名.成员名。

通过函数来控制结构体时,形参的选择:

通过指针的知识,我们知道当在被调函数需要改写主调函数的实参时,应传递指针变量,否则直接传递变量值即可;

但是在控制结构体是,不管须不须要改写实参,都应该传递结构体指针变量,因为结构体变量是复合数据类型,所占字节较大,如果传递结构体变量,那么被调函数的形参同样须要那么大的字节来存储实参发送过来的数据,而使用指针则避免了这个问题,因为指针存放内存地址,始终只占4个字节,使用指针直接对原内存进行操作,不仅减少了内存耗用 ,还提高了执行速度。

结构体变量的运算:

结构体变量不能加、减、乖、除;

但结构体变量可以相互赋值。

为结构体动态分配内存:

struct Student
{
   int avg;
   float scorr;
}

struct Student *st1;
st1= malloc(sizeof(struct Student)); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值