C语言中的结构体和枚举

一、结构体

结构体:很像面向对象中的对象,但是结构体没有方法只有属性,一个结构体由不同类型的元素组成,而相较于数组来说,数组只能存储相同类型的元素。结构体占用的空间等于内部各元素占用空间的和,并且元素在内存中的地址(按照元素定义的顺序)是连续的。

注意:结构体不能像面向对象中那样递归调用,自己包含自己,但是可以包含其他类型的结构体。

 

 

//定义一个班级的结构体

struct Class{

    char *className;

};

//定义一个结构体,只是一个类型,但不是一个变量,系统并没有为Student这个结构体分配内存

struct Student{

    int age; //占用4个字节

    char *name;//占用8个字节

   struct Class class;

};

 

//第二种定义方式定义时赋值

struct Student1{

    int age;

    char *name;

} stu1={24,"cooljune"};

//第三种方式匿名

struct {

    int age;

    char *name;

} stu2={24,"cooljune"};

int main(int argc, const char * argv[])

{

    //定义一个结构体变量,系统分配内存

    struct Student stu={24,"cooljune",{"三年级一班"}};//赋值

    //访问变量

    printf("age=%i,name=%s,班级=%s\n",stu.age,stu.name,stu.class.className);

    return 0;

}

 

结构体数组

 

struct Student stus[5]={{24,"cooljune","三年级一班"}};

    stus[0].age=28;

     printf("age=%i,name=%s,班级=%s\n",stus[0].age,stus[0].name,stus[0].class.className);

结构体与指针

//指向结构体的指针

void point(){

    struct Student stu={24,"cooljune",{"yiban"}};

    struct Student *s;//定义一个指向结构体的指针

    s=&stu;//让指针s指向结构体stu

    //通过指针访问结构体的值

   

    printf("name=%s",(*s).name);

    printf("name=%s",s->name);//c++中的方式

}

 二、枚举

枚举:和面向对象中一样,枚举都是用来定义一些固定取值的常量,但是C中的枚举中的值是整数,默认按照0递增,也可以在定义枚举的时候赋值,那么后面的元素的值就会以这个元素为第一个元素递增

 

//定义枚举类型

enum Week{

    sun,mon,tues,wed,thur,fri,sat

};

 

//定义时赋值当然枚举名称可以省略

void createEnum(){

    enum Week{

        sun,mon=2,tues,wed,thur,fri,sat

    } w=sun;

//定义一个枚举变量

    enum Week w=fri;

    printf("%i",w);

}

遍历枚举元素

 

    //遍历枚举元素

    enum Week ws;

    for (ws=sun; ws<=sat; ws++) {

        

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值