0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言基础语法之结构体

电子工程师 来源:未知 作者:胡薇 2018-11-08 08:35 次阅读

C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。

结构体的定义

要想定义结构,必须用到struct关键字,struct的语句格式:

在struct 中声明了一个含有若干新成员的数据类型。

tag是结构体标签

member-list是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。

variable-list结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。下面是声明 Book 结构的方式:

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

在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1,则是非法的。

结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。

如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明,如下所示:

结构体变量的初始化

和其它类型变量一样,对结构体变量可以在定义时指定初始值。

执行输出结果为:

title : C 语言author: RUNOOB subject:编程语言book_id:123456

访问结构成员

为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用struct关键字来定义结构类型的变量。下面的实例演示了结构的用法:

当上面的代码被编译和执行时,它会产生下列结果:

结构作为函数参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:

当上面的代码被编译和执行时,它会产生下列结果:

指向结构的指针

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

structBooks*struct_pointer;

现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:

struct_pointer =&Book1;

为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:

struct_pointer->title;

让我们使用结构指针来重写上面的实例,这将有助于您理解结构指针的概念:

当上面的代码被编译和执行时,它会产生下列结果:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128526
  • 结构体
    +关注

    关注

    1

    文章

    125

    浏览量

    10750

原文标题:C语言中的结构体

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    430编程C语言常识(IAR)结构与联合体

      结构与联合体是C语言的常见数据类型,可对C的基本数据类型进行组合使之能表示复杂的数据结构
    发表于 11-22 15:43

    关于学习stm32 C语言编程结构的使用

    大家好,本人最近学在学习stm32,但是发现大量的使用结构;之前玩51单片机的时候,基本不怎么用到过结构,突然间要用到这么多,有点措手不及,现在想补习一下
    发表于 08-08 23:58

    C语言-结构对齐详解

    `C语言-结构对齐详解朱有鹏1、结构为何要对齐访问访问
    发表于 07-12 16:41

    漫谈C语言结构

      相信大家对于结构都不陌生。在此,分享出本人对c语言结构的学习心得。如果你发现这个总结中有
    发表于 11-15 15:59

    【干货】c语言基础语法——结构

    1、关于C语言结构的引入在实际问题中有时候我们需要几种数据类型一起来修饰某个变量。例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄(整形)等等。这些数据类型都不同但是他们
    发表于 06-03 17:10

    如何利用C语言结构成员变量的地址?

    C语言,如何取结构成员变量的地址?发个列程好吗?我好研究一下
    发表于 11-04 03:31

    单片机C语言 -- 基于结构的面向对象编程技巧

    1、Keil4 C51工程网址:2、需要一定的C语言基础,才看得懂此文。一、面向对象单片机C语言的面向对象编程,是利用
    发表于 02-04 21:48

    C语言结构对函数指针封装示例

    C语言结构对函数指针封装示例示例:#include int i, j;struct DATE{ int year; char month; char data; char hour;
    发表于 07-15 06:18

    结构与共用的区别

    语言中,还有另外一种和结构非常类似的语法,叫做共用(Union),它的定义格式为:union 共用
    发表于 07-20 06:57

    C语言结构在单片机中的应用有哪些?

    C语言的好处是什么?C语言结构在单片机中的应用有哪些?
    发表于 10-14 06:18

    单片机C语言串口传输结构是什么?

    单片机C语言串口传输结构是什么?
    发表于 10-14 06:44

    C语言结构和共用在单片机中的妙用是什么

    【分享】C语言结构和共用在单片机中的妙用C语言
    发表于 11-30 06:13

    如何写单片机的C语言结构

    摘要:听说还有好多学单片机的小伙伴不会用结构?指针和结构是学单片机必须要掌握的,如果你C语言
    发表于 12-03 07:11

    struct结构的基本语法

    1. struct 结构  基本语法  struct myabc{        unsigned int a;        unsigned int b;        unsignedint
    发表于 12-15 09:25

    怎样去使用C语言结构和共用

    C语言结构和共用分别有何特点呢?怎样去使用C语言
    发表于 01-17 07:51