zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 树型dp
    NOIP模拟 Math
    HTML5本地存储LocalStorage和sessionStorage
    数据结构与算法第一章答案
    堆和队列的应用之——简单计算器
    HITCS-LAB1 Linux 下C工具的应用
    cs:app 第二章homework(已完结)
    vim使用小结(1)
    学术英语写作(1)
    linux基础(2)
  • 原文地址:https://www.cnblogs.com/netcn/p/4364094.html
Copyright © 2011-2022 走看看