C语言程序设计(28)

84 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情

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

#include<studio.h>  
enum color{red,green,yellow};  
void f(enum color c);  
int main(void)  
{  
    enum color t=red;  
    scanf("%d",&t);  
    f(t);  
    return 0;  
}  
void f(enum color c){  
    printf("%d\n",c);  
}

枚举量可以作为值,枚举类型可以跟上enum作为类型,但实际上是以整数来做内部计算和外部输入,输出的。
小套路:自动计数的枚举
enum COLOR{RED,YELLOW,GREEN,NumColors};(最后一个的数值即为前面名字的个数)
枚举量
声明枚举量的时候可以指定值
enum COLOR{RED=1,YELLOW,GREEN=5}(YELLOW为2)。
结构类型

#include<studio.h>  
structure date{  
int month;  
int day;  
int year;  
};  
int main(){  
    structure date today;  
    today•month=07;  
    today•day=31;  
    today•year=2022;  
    printf("Today's date is%i-%i-%i\n",today•year,today•month,today•day);  
    return 0;  
}

和本地变量一样,在函数内部声明的结构类型只能在函数内部使用,所以通常在函数外部声明结构类型,这样就可以被多个函数使用了。
声明结构的形式
struct point{
int x;
int t;
};
struct point p1,p2;
p1和p2都是point,里面有x和y的值
struct{
int x;
int y;
}p1,p2;
p1和p2都是一种无名结构,里面有x和y。
struct point{
int x;
int y;
}p1,p2;
p1和p2都是point,里面有x和y的值。
对于第一种和第三种形式都声明了结构point。但是第二种形式未声明point,只是定义了两个变量。 结构的初始化
struct date today ={07,31,2022};(分别对应month,day,year)
struct date thismonth={•month=7,•year=2022};(day=0)
结构和数组有些像
数组用[](运算符)和下标访问其成员a[0]=10;
结构用•(运算符)和名字访问其成员。

结构运算
要访问整个结构,直接用结构变量的名字
对于这个结构,可以做赋值,取地址,也可以传递给函数参数。
p1=(struct point){5,10};//相当于p1•x=5;p1•y=10;
p1=p2;//相当于p1•x=p2•x;p1•y=p2•y。