c语言结构体,一看就会的小白教程!!!

前言

c语言是比较底层的一门语言,不像其他语言一般面向对象,而更多的是面向过程。倘若一定要面向对象,或者是编写链表等数据结构,结构体是必须要学好的一部分!!

一、结构体的定义

什么是结构体

数组是由相同类型的数据构成的一种数据结构,适用于对相同属性的数据进行处理。

而结构体是将不同类型的数据成员组织到统一的名字之下。在数据库管理中得到了广泛作用。

结构体变量的定义

struct//结构体名
{
    数据类型 成员1的名字
    数据类型 成员2的名字
    ......
    数据类型 成员n的名字
};//注意,这里有一个分号

首先,我们需要明白,结构体一种数据类型,在这个数据类型中包含很多结构体成员,这些结构体成员也可以是各种类型的,如int,char等类型。

但是结构体模板只是生命力一种数据类型,并没声明结构体类型的变量(结构体变量将在下文介绍

定义一个完整的结构体

先声明结构体模板,再定义结构体变量

struct student
{
    long studengID;
    char studentName[10];
    char studentSex;
    int yearOfBirth;
    int score[4];
}stu1;//注意,结构体变量的名字写在最后,并且要打分号!

注意,结构体变量的名字写在最后,并且要打分号!

用typedef定义数据类型

关键词typedef用于系统固有程序员自定义的数据类型定义的一个别名。

typedef int INTEGER;

typedef的作用实际上是为int定义了一个新的名字,从此int用INTEGER来表示

typedef可以用在结构体前面

typedef struct student
{
    long studentID;
    char studentName[10];
    char studentSex;
    int yearOfBirth;
    int score[4];
}STUDENT;

本来需要struct student来定义某结构体对象(可以与java中的类作类比),由于有了typedef,所以可以直接用STUDENT来定义结构体对象。

结构体对象的初始化

例如上面的结构体,我们对它进行初始化

STUDENT stu1={100310121,"王刚",'M',1991,{72,83,90,82}}
中间有数组成分,则在里面进行正常初始化即可

二,嵌套结构体

嵌套结构体就是在一个结构体内包含了另一个结构体作为成员

typedef student date
{
    int year;
    int month;
    int day;
}DATE;
typedef struct student
{
    long studentID;
    char studengName[10];
    char studentSex;
    DATE birthday;
    int score[4];
}STUDENT;

结构体变量的引用

点运算符

结构体变量名.成员名;
typedef student date
{
    int year;
    int month;
    int day;
}DATE;

就比如

DATE stu1;
stu1.day=5;//stu1这个对象所对应的day是5

嵌套结构体的引用

当出现结构体嵌套时,必须以级联方式访问结构体成员,即通过成员选择运算符逐级找到最底层的成员时再引用
例如:

typedef student date
{
    int year;
    int month;
    int day;
}DATE;
typedef struct student
{
    long studentID;
    char studengName[10];
    char studentSex;
    DATE birthday;
    int score[4];
}STUDENT;

此结构体嵌套联级引用

DATE stu1;
stu1.birthday.year=1991;
stu1.birthday.month=5;
stu1.birthday.day=19;

三,对数组进行赋值

c语言允许对具有相同结构体类型的变量进行赋值。
例如:

stu1.studentID=stu2.studentID;

并非所有的结构体成员都是可以使用赋值运算符来赋值,对字符数组类型的结构体成员进行赋值时,必须使用字符串处理函数strcpy()
例如:(姓名是一个字符数组)

strcpy(stu1.studentName,"王刚");

四,结构体数组

结构体数组的定义

一个结构体变量只能表示学生成绩管理表中的一个学生的记录信息,代表其中一个实例,而数据库中有多个学生记录,结构体数组就可以表示这么多据欧相同结构的学生记录。

定义

STUDENT stu[30];

结构体数组的初始化

直接赋值即可
如:

STUDENT stu[30]={{100310121,"王刚",'M',{1991,5,19},{72,83,90,82}},
                {{100310122,"李小明",'M',{1992,8,20},{88,92,78,78}}
                };

中间用逗号隔开,并且最后的那个结构体成员后面不打逗号,只需要再加一个括号即可

五,结构体指针

结构体指针定义及初始化

STUDENT *pt;
pt=&stu1;
//或者
STUDENT *pt=&stu1;

指向运算符

指向运算符又称箭头运算符
指向结构体的指针变量名->成员名
例如

pt->studentID=100310121
//或者
(*pt).sudentID=100310121;

嵌套结构体指针

pt->birthday.year=1991;
pt->birthday.month=5;
pt->birthday.day=19;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值