C结构数据类型

2015/09/18 C

C结构数据类型

数组可以看成是一种集合,用来记录一组类型相同的数据,如果要同时记录多个数据类型不同的数据,数组就不适用了。这时,C语言的结构类型(Structure)就能派上用场了。简单来说,结构就是一种能让用户自定义的数据类型,并且可以将一种或多种关联的数据类型集合在一起,形成全新的数据类型。

结构简介

结构能够形成一种派生数据类型(Derived Data Type),是一种以C语言现有的数据类型作为基础,允许用户建立自定义的数据类型。声明结构后,要先告知编译程序产生了一种新的数据类型,还必须声明结构变量,才能够使用结构存取成员。

例如,描述一位学生的成绩数据时,除了要记录学号与姓名等字符串数据外,还必须定义数值数据类型来记录英语、语文、数学等成绩,此时数组就不再适用,可以把这些数据类型组合成结构类型,以简化数据处理的问题。

声明结构变量

声明结构变量有两种方式:第一种方式为结构与变量分开声明,先定义结构主体,再声明结构变量;第二种方式为在定义结构主体时一并声明结构变量。结构的组成必须有结构名称与结构项目,而且必须使用C语言的关键字struct来建立,声明方式如下:

struct 结构类型名称
{
      数据类型 结构成员1;
      数据类型 结构成员2;
      …
}结构变量1;
或
结构类型名称 结构变量2;

在结构定义中可以使用C语言的变量、数组、指针甚至是其他结构成员以形成嵌套结构的声明。下面定义一个简单结构:

struct person
{
    char name[10];
    int age;
    int salary;
};  /* 务必加上分号;*/

注意定义后的分号不可省略,通常新手在使用结构定义数据类型时会犯这个错误。还要特别强调的是结构中不能有同名结构存在,下面这种结构声明就是错误的:

struct student
{
    char name[80];
    struct student next; /* 不能有同名结构 */
};

定义了结构就等于定义了一种新的数据类型,可以按下列声明方式声明结构变量:

struct student s1, s2;

也可以在定义结构主体的同时声明结构变量:

struct student
{
    char name[10];
    int score;
    int ID;
} s1, s2;

或者采用不定义结构名称直接声明结构变量,并同时设置初始值:

struct 
{
    char name[10];
    int score;
    int ID;
} s1={ "Justin",90,10001};

存取结构成员

Search

    微信好友

    博士的沙漏

    Table of Contents