一起学习C语言:结构体(一)
发布日期:2021-06-30 21:33:47 浏览次数:2 分类:技术文章

本文共 1472 字,大约阅读时间需要 4 分钟。

  上一章<一起学习C语言:函数> 中,我们了解了函数的声明形式和程序的编译过程,以及函数的递归调用和函数的指针调用。本章节,我们分析结构体。

章节预览:

章节内容:

结构体

  实际编程中,一些函数采用数据按组传入使用,比如整形数组对象(512位成员)作为参数传入。如果一组数据中包含不同类型的数据时,数组已不再适用,我们需要考虑其它保存方式。首先,我们了解一组数据中包含不同类型的数据的例子:某地游泳馆举行100米自由泳比赛,选手李的成绩为55.26秒。这个例子中,姓名应为字符类型,成绩应为单浮点数类型。

  接下来,我们通过本章节内容了解结构体的定义形式和用法。

1. 结构体的定义形式

  结构体与之前接触的类型不同,需要自定义类型名称和成员信息。

     结构体定义形式

         struct 名称 {

             成员1
             …
         };

         结构体定义语句由关键字(struct)、结构名称、语句块和语句结束符(;)四部分组成,其中关键字、语句块和语句结束符不能省略。

     结构体定义举例

         struct swim {

             char name[64];
             float grade;
         };

         上述示例定义名称为swim的结构体,语句块内有两位成员。第一个成员为字符类型数组对象name,第二个成员为单浮点数类型对象grade。

2. 结构变量的定义形式

  结构变量可以通过多种形式定义,即可以根据结构名称定义结构变量,也可以在定义结构语句中指定结构变量,还可以直接定义结构变量。

  接下来,分析结构变量的几种定义形式:

      1. 根据结构名称定义结构变量:

          struct swim {

              char name[64];
              float grade;
          };
          struct swim sw;

          先定义结构语句,然后通过关键字加结构名称定义结构变量。

      2. 定义结构语句中指定结构变量:

          struct swim {

              char name[64];
              float grade;
          } sw;

          定义结构语句的同时指定结构变量。

      3. 隐式定义结构语句中指定结构变量:

          struct {

              char name[64];
              float grade;
          } sw;

          隐式属于泛指含义,在这里表示定义结构语句中不指定结构名称,即定义结构语句外无法通过结构名称定义结构变量。这种形式一般较少使用,作为了解即可。

3. 结构变量初始化赋值

  结构变量初始化赋值方式与数组变量相似,都是在大括号内为成员赋值。

      结构变量初始化赋值:

          struct swim {
              char name[64];
              float grade;
          }sw = {NULL, 0.0};
          struct swim swi = {NULL}; //sw与swi初始化效果相同

          结构变量初始化只为第一个成员赋值时,其余的成员自动赋值为0。在结构体中又存在结构类型成员或数组类型成员时,可以采用二维数组方式赋值:

          struct swim {

              char name[64];
              int circle[64];
              float grade;
              char* name1;
          }sw = {
{NULL}, {1, 2, 3}};

          结构变量sw初始化完成后,结构变量成员name为0、0…0,circle为1、2、3、0…0,grade为0.0,name1为NULL。

  总体来说,结构变量与数组变量在初始化赋值方面较为相似,但类型构造方面存在一些差异。结构变量的地址是结构内存的首地址,也是第一个结构变量成员的地址,结构变量中储存的值是结构变量成员;而数组变量地址和数组变量储存的值都是数组内存的首地址。

目录预览

转载地址:https://lkyof.blog.csdn.net/article/details/109256505 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Centos系列 Curl error (37): Couldn‘t read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-XXXX
下一篇:tensorflow离线安装指南

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年05月03日 14时10分46秒