开启掘金成长之旅!这是我参与「掘金日新计划 · 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。