@结构体

结构体

将不同种类型的数据有序地组合在一起,构造出一个新的数据类型,这种形式称为结构体。

结构体是多种类型组合的数据类型。

结构体类型的定义例子

struct是关键字,

不能省略

struct
[结构体名]

{

类型标识符 成员名;

类型标识符 成员名;

…………….

};

合法标识符

可省:无名结构体

成员类型可以是

基本型或构造型

例 struct student

{

     short

int num;

        char  name[20];

        char sex;

        short int age;

        float score;

        char addr[30];

};

例 struct student

{

     short

int num;

        char  name[20];

        char sex;

        short int age;

        float score;

        char addr[30];

};

定义结构体类型的同时定义结构体变量

一般形式:

struct 结构体名

{

类型标识符 成员名;

  类型标识符    成员名; 

…………….

}变量名表列;

例 struct student

{ int num;

             char  name[20];

             char sex;

             int age;

             float score;

             char addr[30];

}stu1,stu2;

– 直接定义结构体变量

一般形式:

struct

{

类型标识符 成员名;

类型标识符 成员名;

…………….

}变量名表列;

例 struct

{ int num;

             char  name[20];

             char sex;

             int age;

             float score;

             char addr[30];

}stu1,stu2;

用无名结构体直接定义

变量只能一次

– 说明

• 结构体类型与结构体变量概念不同

– 类型:不分配内存; 变量:分配内存

– 类型:不能赋值、存取、运算; 变量:可以

• 结构体可嵌套

• 结构体成员名与程序中变量名可相同,不会混淆


struct student

{ int num;

char name[20];

struct date

{ int month;

        int day;

        int year;

}birthday;

}stu;


struct date

{ int month;

int day;

int year;

};

struct student

{ int num;

char name[20];

struct date birthday;

}stu;

– 说明

• 结构体类型与结构体变量概念不同

– 类型:不分配内存; 变量:分配内存

– 类型:不能赋值、存取、运算; 变量:可以

• 结构体可嵌套

• 结构体成员名与程序中变量名可相同,不会混淆


struct student

{ int num;

char name[20];

struct date

{ int month;

        int day;

        int year;

}birthday;

}stu;


struct date

{ int month;

int day;

int year;

};

struct student

{ int num;

char name[20];

struct date birthday;

}stu;

结构体变量的引用

引用规则

引用方式: 结构体变量名.成员名

• 可以将一个结构体变量赋值给另一个结构体变量

• 结构体嵌套时逐级引用

• stu1.num=10;

• stu1.score=85.5;

• if(stu1==stu2)

• stu1.score+=stu2.score;


Wan Lin”,‘M’,19,87.5,“DaLian

1、不能对结构体变量整体赋值或输出,只能分别对各个成员引用。

2、嵌套的结构体变量必须逐层引用。

3、结构体变量中的成员可以同一般变量一样进行运算。

结构体变量的初始化

形式一:

struct 结构体名

{

  类型标识符    成员名;

  类型标识符    成员名; 

     …………….

};

struct 结构体名 结构体变量={初始数据};

例 struct
student

    {      

int num;

             char  name[20];

             char sex;

             int age;

             char addr[30];

    }; 

struct student
stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”};

– 形式二:

struct 结构体名

{

  类型标识符    成员名;

  类型标识符    成员名; 

     …………….

}

结构体变量={初始数据};

例 struct
student

    {      

int num;

             char  name[20];

             char sex;

             int age;

             char addr[30];

    }stu1={112,“Wang Lin”,‘M’,19, “200

Beijing Road”};

– 形式三:

struct

{

  类型标识符    成员名;

  类型标识符    成员名; 

     …………….

}结构体变量={初始数据};

例 struct

    {      

int num;

             char  name[20];

             char sex;

             int age;

             char addr[30];

    }stu1={112,“Wang Lin”,‘M’,19, “200

Beijing Road”};

关于结构类型变量的使用,说明以下几点:

1、同类型的结构体变量之间可以直接赋值。这种赋值等同于各个成员的依次赋值。

2、结构体变量不能直接进行输入输出,它的每一个成员能否直接进行输入输出,取决于其成员的类型,若是基本类型或是字符数组,则可以直接输入输出。

3、结构体变量可以作为函数的参数,函数也可以返回结构体的值。当函数的形参与实参为结构体类型的变量时,这种结合方式属于值调用方式,即属于值传递。

猜你喜欢

转载自blog.csdn.net/dc_989898/article/details/83045981