C语言第八讲——结构体

本文介绍了C语言中的数据类型,包括简单类型、构造类型(如数组和结构体),重点讲解了如何创建结构体类型,如定义结构体变量、存储不同类型数据的结构体和嵌套结构体。还强调了结构体变量的声明、赋值和内存分配原则。
摘要由CSDN通过智能技术生成

目录

定义结构体变量

1.C语言的数据类型

(1).空类型void(没有数据)

(2).简单类型

(3).构造类型(复合数据)

2.结构体:类型不同的元素构成的集合

3.怎样创建结构体类型

4.定义结构体变量


定义结构体变量

1.C语言的数据类型

空类型void(没有数据)

数据类型

枚举类型 enum

空类型 void

派生类型

(1).空类型void(没有数据)

(2).简单类型

(单一数据)//预定义类型:编译器预设了存储格式、编码方式,以及存储空间大小,可以在程序中直接使用类型名关键字定义变量。例如:double area;

·定点数

int、short、long、char    unsigued、signed

·浮点数

float、double

·指针(存储内存地址)

·枚举

(3).构造类型(复合数据)

自定义类型:程序中使用这种数据,需要先定义类型即定义该数据的存储结构或表现形式,对于较简单的自定义类型,也可以在定义类型的同时定义变量。

·数组

·结构体.

·共用体

2.结构体:类型不同的元素构成的集合

·存储8个人的体重

·-维数组:float a[8];

·存储三个人四门课成绩

·二维数组:int b[3][4];

·存储个人资料

·需要存储类型不同的数据

·自定义类型.

·结构体

·存储人物信息表

·存储多个人物信息

·每个人的各种信息不同

·但人与人信息格式相同

·结构体数组.

·广义二维数组

3.怎样创建结构体类型

·结构体是一种构造数据类型

·用途:把不同类型的数据组合成一个整体---自定义数据类型

结构体类型定义:

struct[结构体类型名]//struct是关键字,不能省略

{

类型标识符 成员名1;//成员类型可以是基本型或其他构造类型

类型标识符 成员名2;

};结构体类型定义是一条语句,此处分号不能丢

Eg;

(1).如下例,定义一个结构体存储学生信息,包含学生的学号、姓名性别、年龄、成绩,地址:

Num       name    seX    age   score  addr

10010     Li Fang    M     18     87.5  Beijing

struct Student

{  int num; //学号为整型

char name[20]; //姓名为字符串

char sex; //性别为字符型

int age; //年龄为整型

float score; //成绩为实型

char addr[30]; //地址为字符串

}; //注意最后有一个分号

结构体类型定义只描述结构的组织形式,不分配内存

(2).结构体是将类型不同的元素组成集合,但如果需要,成员类型相同的情况也可以使用结构体类型。例如,定义一个日期型结构体:

struct Date

{int month;//月

int day;//日

int year;//年

};

(3).结构体可以嵌套定义,即结构体成员可以属于另一个结构体类型

struct Student

{int num;

char name[20];

char sex;

int age;

struct Date birthday;//成员birthday属于struct Date类型

char addr[30];

};

4.定义结构体变量

定义结构体变量有三种方式

(1).先声明结构体类型,再定义该类型的变量

一般形式:

struct      结构体类型名

{

类型标识符成员名;

类型标识符成员名;

};

struct 结构体类型名 变量名表列;

(2).在定义结构体类型的同时定义结构体变量

一般形式

struct      结构体类型名

{

类型标识符成员名;

类型标识符成员名;

}变量名表列;

(3).不指定类型名而直接定义结构体类型变量

一般形式

struct    // 此处省略结构体类型名,用无名结构体直接定义变量只能用一次

{

类型标识符成员名;

类型标识符成员名;

}变量名表列;

注意:

(1)结构体类型与结构体变量是不同的概念,不要混淆。只能对变量赋值存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。(2)结构体变量分配的内存空间要能够存储所有成员,所以他的内存空间大小等于所有成员的总和。

(3)结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一对象。

(4)对结构体变量中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。

(5)注意结构体类型和结构体变量的作用域及生存期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jiao₍˄·͈༝·͈˄*₎◞ ̑̑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值