• C语言学习笔记--枚举&结构体


    • 枚举

    枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明:

      enum 枚举类型名字 {名字0,名字1,。。。,名字n};

    枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为它们就是常量符号,它们的类型是int,值则依次从0到n。

      如:enum color{red,yellow,green};

    就创建了3个常量,red的值是0,yellow的值是1,green的值是2。

    当需要一些可以排列起来的常量值时,定义枚举的意思就是给这些常量值名称。

    枚举量可以作为值;

    枚举类型可以加上enum作为类型;但实际是以整数来计算和输入输出的。

    #include<stdio.h>
    enum color{ red, yellow, green,Numcolors};//此处Numcolors为小套路,数值刚好等于定义的枚举量,可以定义数组,遍历数组等使用。
    void f(enum color c);//此处enum必须带上
    int main(void)
    {
            enum color t = red;//枚举类型可以加上enum作为类型
            scanf("%d",&t);
            f(t);
    
            return 0;
    }
    
    void f(enum color c)
    {
            printf("%d
    %,c);
    }

    枚举量

    声明枚举量的时候可以指定值,如

      

    enum COLOR {RED = 1, YELLOW,GREEN = 5};//RED = 1是从1开始的,不是从0
                                                                             //YELLOW =2
                                                                            //GREEN = 5

    枚举只是int,即使给枚举类型的变量赋不存在的值,也没有任何warning和error。

    虽然枚举类型可以当做类型用,但是很少用。

    如果有意义上排比的名字,用枚举比用const int方便。

    枚举比宏好,因为枚举有int类型。

    •  结构
    #include<stdio.h>
    int main(int grc,char *grv[])
    {
            struct date {
            int month;
            int day;
            int year;
            };
            struct date today;
            today.month = 07;
            today.day = 31;
            today.year = 2014;
    
            printf("Today's date is %i-%i-%i
    ",today.month,today.day,today.year);
    
            return 0;
    }

    和本地变量一样:在函数内部声明的结构变量只能在函数内部使用;在函数外声明的结构变量可以在所有函数使用。

    所以通常在函数外部声明结构变量,这样可以在多个函数使用。

     结构变量的初始化

    struct date day = {07,31,2014};//第一种初始化方法
    struct Thismonth = {.month = 07,.year = 2014};//第二种初始化方法。未指定为0

    结构变量的成员

    结构和数组有点像

    数组用【】运算符和下标访问其成员

    结构用 .运算符和名字访问其成员

      today.day

    要访问整个结构,直接用结构变量的名字

    对于整个结构,可以赋值,取地址,也可以传递给函数参数

    p1 = (struct point){5,10};  ----> p1.x = 5; p2.y = 10;

    p1 = p2;  ---->相当于p1.x = p2.x; p1.y = p2.y

  • 相关阅读:
    博客园定制
    【杂文】久 等 了
    【杂文】随心一记
    NOIP2021游寄
    【python】mac+appium+python的环境配置完整流程
    压力测试平台(nGrinder)入门到精通教程
    Gunicorn启动flask项目
    统计代码测试覆盖率Python
    Android开发Google Pixel、Google Nexus系列手机刷机获取root并且设置ro.debuggable=1的方法
    c宏定义#define、#、##、__VA_ARGS__符号的理解
  • 原文地址:https://www.cnblogs.com/netcn/p/4364094.html
Copyright © 2020-2023  润新知