C语言结构体与枚举等类型

来源:互联网 发布:南昌java培训费用 编辑:程序博客网 时间:2024/05/22 00:25


一、C语言结构体

结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共计有三种形式,分别介绍如下:

1、结构体定义的三种形式

       1>     先定义结构体类型,再定义结构体类型变量:

struct stu / *定义学生结构体类型* /{    char name[20]; / * 学生姓名* /     char sex; / * 性别* /       long num; / *学号* /       float score[3]; / * 三科考试成绩* /};struct stu student1,student2;/ * 定义结构体类型变量* /struct stu student3,student4;


用此结构体类型,可以定义更多的该结构体类型变量。

       2>     定义结构体类型同时定义结构体类型变量:

struct data{    int day;    int month;    int year;} time1,time2;


也可以再定义如下变量:
struct data time3,time4;
用此结构体类型,同样可以定义更多的该结构体类型变量。

       3>     直接定义结构体类型变量:

struct{    char name[20]; / *学生姓名* /    char sex; / *性别* /    long num; / *学号* /    float score[3]; / *三科考试成绩* /} person1,person2; / *定义该结构体类型变量* /



该定义方法由于无法记录该结构体类型,所以除直接定义外,不能再定义该结构体类型变量


2、结构体用法

       1>    基本用法

                           如:

 struct Person  // 这一句只是定义结构体类型,并不会分配存储空间。     {int age;double height;char *name;}struct Person p1 = {10, 1.55,"jack"};    //这一步才开始定义结构体变量,开始分配存储空间。printf("age = %d,height = %f,name = %s",p1.age,p1.height,p1.name);   //调用打印。


       2>    所占内存:结构体所占存储空间一定为最大成员所占空间的倍数。如结构体含有int 和char *,原本应该是4+8,那么最后应该是16。

       3>    如果我们再定义一个结构体变量,struct Person P2={.height= 1.34;.age=12;.name="sfd"};

                         p2 = p1;                                            // 会将p1所有的成员变量对应的值赋给p2的成员。


二、结构体数组

1、结构体数组定义举例

 struct stu s[3]={{1,"jack",300},{2,"rose",400},{3,"kim",200}}


如果更改某组数值,不可以用s[0]={4,"tom",600};
只能是s[0].no =4;这样去修改。


三、结构体嵌套

1、结构体嵌套举例

 

struct Date{   int year;   int month;    int day;};struct Student{    int no;    struct Date birthday;//嵌套结构体定义生日    struct Date ruxueriqi //嵌套结构体定义入学日期}      struct Student stu = {1,{2000,9,10},{2012,8,23}};printf("year = %d,month = %d,day = %d",stu.birthday.year, stu.birthday.month, stu.birthday.day);



三、枚举类型

1、枚举类型举例

如果一种变量只有几种可能的值,可以定义为枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。

enum Season{spring,(默认值为0,后面依次加一)summer,autumn,winter};//定义枚举类型enum Season s;//定义枚举类型变量



0 0
原创粉丝点击