C语言学习之结构体(一)

来源:互联网 发布:单片机浇花 编辑:程序博客网 时间:2024/05/22 09:01

一(1)结构体类型

  (迄今为止),已介绍了基本数据类型(整型、浮点型、字符型变量等),也介绍了构造类型数据(

构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中,构造类型有以下几种: ??数组类型 ??结构体类型 ??共用体(联合)类型

)——数组。数组中各元素是属于同一个类型的。

  但是只有这些数据类型是不够的。有时候需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一起的数据是互相有联系的。例如一个学生的学号,姓名,性别,年龄,成绩,家庭住址等等。这些项都与某一学生相联系。

num        name        sex        age        score        addr

10010     Li Feng      M           18           85            BeiJing

可以看到num,name,sex,age,score,addr都是数据LiFeng的,将他们分开定义不太合适,不能反映他们之间的互相联系了,所以C语言就允许用户自己定义一种数据结构,称它为结构体,保存这些数据

struct student {
    int num;
    char name[20];
    char sex;
    int age;
    int score;
    char addr[30];
};

  (2)定义结构体类型变量

  前面只是指定了一个结构体类型,其中并没有具体的数据,系统对之也不会分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。可以采取以下3种方法定义结构体类型变量:

(a)先声明结构体类型在定义变量

struct student student1, student2

(b)在声明类型的同时定义变量

struct student {
    int num;
    char name[20];
    char sex;
    int age;
    int score;
    char addr[30];
}student1, student2;

(3)不指定类型名,直接定义结构体类型变量

struct {
    int num;
    char name[20];
    char sex;
    int age;
    int score;
    char addr[30];
}student;

注意:(1)结构体类型和结构体变量是不同的概念,不要混同。只能对变量赋值,存取或者运算,而不能对一个类型赋值,存取或运算。在编译时,对类型是不分配空间的,只对变量分配控件(这里是怎么知道的?)

            (2)结构体类型中的成员名可以与程序中的变量名系那个痛,但二者不代表同一对象。

            (3)对结构体变量中的成员可以单独使用,它的作用与地位相当于普通变量

  (3)在定义了结构体变量以后,当然可以引用这个变量,但要遵循以下规则:

            (1)同类的结构体变量可以相互赋值

                      student1 = student2;

            (2)如果成员本身也是一个结构体类型,则要用若干个成员运算符,一级一级的找到最低一级成员。

            (3)对结构体变量的成员可以像普通变量一样进行各种运算

                     student.age++;

             (4)可以引用接头体变量成员的地址,也可以引用结构体变量的地址:

                      scanf("%d",student.num);

                      printf("%o", student);(输出student的首地址)

但不能用以下语句整体读入结构体变量,如:scanf(“%d, %s, %c, %f, %s”, student1);

   (4)结构体变量的初始化

            struct student {
    int num;
    char name[20];
    char sex;
    int age;
    int score;
    char addr[30];
}student1={10010, "LiFeng", 'M', 20, 90, "BeiJing"};



  参考:C程序设计教程

0 0