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

    文章

    7591

    浏览量

    135815
  • 结构体
    +关注

    关注

    1

    文章

    129

    浏览量

    10823

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

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

收藏 人收藏

    评论

    相关推荐

    C语言中数组和结构的内存表示和布局

    C语言中,数组和结构都可以代表一块内存,但为什么结构可以直接赋值,而数组不可以?这个问题涉及
    发表于 08-28 10:54 1387次阅读

    C语言循环结构的使用方法

    详细介绍了C语言while循环结构、do-while循环结构、for循环结构、循环退出语句的语法
    发表于 11-02 11:26 1490次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>循环<b class='flag-5'>结构</b>的使用方法

    C语言结构史上最详细的讲解【软件干货】

    struct结构数据类型 前言 我们知道,在C语言中有一些基本的数据类型,如 char int float long double string(
    的头像 发表于 03-28 17:52 675次阅读

    漫谈C语言结构

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

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

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

    结构与共用的区别

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

    struct结构的基本语法

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

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

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

    嵌入式C语言中的union语法的作用是什么

    C语言中的结构语法是非常重要,也是非常有用的,相信看了最近几节的读者应该明白。事实上,在实际的C
    发表于 08-29 17:10 1825次阅读

    C语言结构的声明与定义

    我们刚刚申请了一个名叫Info的结构类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的结构体操作,但是C语言中规定,声明
    的头像 发表于 07-09 09:06 7380次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>之<b class='flag-5'>结构</b><b class='flag-5'>体</b>的声明与定义

    Prel语法C语言语法的异同综述

    Prel语法C语言语法的异同综述
    发表于 05-25 11:44 6次下载

    C语言-结构与位域

    C语言里的结构是可以包含不同数据类型和相同数据类型的一个有序集合,属于构造类型,可以自己任意组合,并且结构
    的头像 发表于 08-14 10:06 1630次阅读

    C语言入门结构指针

    C语言中,指向结构对象的指针变量既可以指向结构变量,也可指向
    的头像 发表于 03-24 14:59 976次阅读

    C语言结构完全笔记

    我们刚刚申请了一个名叫Info的结构类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的结构体操作,但是C语言中规定,声明
    的头像 发表于 08-01 16:52 557次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>结构</b><b class='flag-5'>体</b>完全笔记

    C语言C++中结构的区别

    同样是结构,看看在C语言C++中有什么区别?
    的头像 发表于 10-30 15:11 100次阅读