一起学习C语言:结构体(一)

本文详细介绍了C语言中的结构体,包括结构体的定义形式、结构变量的定义及初始化赋值。通过实例解析了如何创建和使用结构体,帮助读者理解结构体在保存不同类型数据组合时的应用。
摘要由CSDN通过智能技术生成

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

章节预览:


结构体
1. 结构体的定义形式
2. 结构变量的定义形式
3. 结构变量初始化赋值
目录预览

章节内容:


结构体

  实际编程中,一些函数采用数据按组传入使用,比如整形数组对象(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。

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


目录预览


<一起学习C语言:C语言发展历程以及定制学习计划>
<一起学习C语言:初步进入编程世界(一)>
<一起学习C语言:初步进入编程世界(二)>
<一起学习C语言:初步进入编程世界(三)>
<一起学习C语言:C语言数据类型(一)>
<一起学习C语言:C语言数据类型(二)>
<一起学习C语言:C语言数据类型(三)>
<一起学习C语言:C语言基本语法(一)>
<一起学习C语言:C语言基本语法(二)>
<一起学习C语言:C语言基本语法(三)>
<一起学习C语言:C语言基本语法(四)>
<一起学习C语言:C语言基本语法(五)>
<一起学习C语言:C语言循环结构(一)>
<一起学习C语言:C语言循环结构(二)>
<一起学习C语言:C语言循环结构(三)>
<一起学习C语言:数组(一)>
<一起学习C语言:数组(二)>
<一起学习C语言:数组(三)>
<一起学习C语言:初谈指针(一)>
<一起学习C语言:初谈指针(二)>
<一起学习C语言:初谈指针(三)>
<一起学习C语言:函数(一)>
<一起学习C语言:函数(二)>
<一起学习C语言:函数(三)>
<一起学习C语言:函数(四)>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坤昱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值