更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

关于C语言结构体用法中的坑你知道多少?

  • 发布:strongerHuang
  • 来源:strongerHuang
  • 时间:2020-06-17 15:08

本文主要说的是C语言中的结构体,结构体是C语言中重要的一部分内容,也是C语言中常用的一种数据结构。

一、关于结构体

在C语言中,结构体(struct)指的是一种数据结构,是C语言中复合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

结构体的定义如下所示:

struct tag { member-list } variable-list;

其中:

struct为结构体关键字;

tag为结构体的标志;

member-list为结构体成员列表,其必须列出其所有成员;

variable-list为此结构体声明的变量。

在一般情况下:tag、member-list、variable-list这3部分至少要出现2个。

二、结构体常规定义

不同的定义,应用在不同场景,所以,我们编程时需要结合实际情况来定义结构体。

方法1:

定义结构体stu,此时结构体相当于一个类型,比如int,如需使用此结构体,方法同int.

struct stu{ char aa; short bb; int cc;};struct stu stu1, stu2;

方法2:

定义结构体stu同时定义需要使用的结构体变量stu1, stu2。如后面再需要定义结构体变量,方法同1.

struct stu{ char aa; short bb; int cc;}stu1, stu2;struct stu stu3;

方法3:

定义结构体时,结构体名称缺省,同时定义结构体变量stu1,stu2。但后面不可再定义结构体变量。

struct{ char aa; short bb; int cc;}stu1, stu2;

提示:

这里不能像上面再定义结构体变量:(以下错误)

struct stu3; struct stu stu3;

三、使用typedef定义结构体这里先简单说下typedef.

在C和C++编程语言中,typedef是一个关键字。它用来对一个数据类型取一个别名,目的是为了使源代码更易于阅读和理解。它通常用于简化声明复杂的类型组成的结构 ,但它也常常在各种长度的整数数据类型中看到,例如size_t和time_t。维基百科

方法4:

使用typedef定义结构体同时,给stu结构体别名STU,后续定义可不用使用struct stu,直接使用STU即可。

typedef struct stu{ char aa; short bb; int cc;}STU;STU stu1;

你会发现,其实就是通过关键字typedef,将STU取代了struct stu。

当然,也可以这么用:

struct stu stu1;

上面这种定义就失去了typedef的意思,所以不推荐。

方法5:

使用typedef定义结构体时,省掉结构体第一个别名stu,直接在后面加STU,使用方法同上。

typedef struct{ char aa; short bb; int cc;}STU;STU stu1;

方法6:

还有一种符合语法规则,但意义不大的定义方式。

typedef struct stu{ char aa; short bb; int cc;};struct stu stu1;

以上这些定义方式算是语法的知识,如果还不懂,请再次复习一下。最后,强调一下,学习编程,不能只看书,要多敲代码。如果你想要在短时间内快速入门,顺利掌握一门技术,建议还是选择培训机构。而达内是你的不二选择。从达内出来的学员,一直以来深受相关企业的认可。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:谁说#define语句后面不能有分号?
下一篇:985硕士出来嵌入式驱动开发工资能到多少?

C语言宏定义的几种使用方法

C与C++内存管理避坑指南

C/C++代码规范注释有哪些讲究?

C语言中,全局变量滥用的后果竟如此严重?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省