C语言枚举学习笔记

枚举

常量符号化 就是用符号而不是具体的数字来表示程序中的数字

枚举,例如enum COLOR {RED,YELLOW,GREEN};用枚举而不是定义独立的const int 常量

枚举是一种用户定义的数据类型,它用关键字enum以如下语法来声明 enum枚举类型名字{名字0,名字1......}

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

enum COLOR {RED,YELLOW,GREEN};创建了3个常量,RED是0,YELLOW是1,GREEN是2

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

枚举量可以作为值,枚举类型可以跟上enum作为类型,但是实际上是以整数来做内部计算和外部输入输出的

套路自动计数的枚举

这样需要遍历所有的枚举量或者需要建立一个用枚举量做下标的数组就会很方便

枚举量

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

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

***虽然枚举类型可以当作类型使用,但是实际上很少用不好用;如果有意义上排比的名字,用枚举比const int 方便;枚举比宏(macro)好,因为枚举有int类型

声明结构类型

e.g struct date{

int month;

iint date;

int year;

};

初学者往往会忘记大括号后面的分号

结构类型在函数内外?

和本地变量一样,在函数内部声明的结构类型只能在函数内部使用,所以通常在函数外部声明结构类型,这样可以被多个函数所使用

声明结构的形式

第一种

struct point{

int x;

int y;};

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,第二没有只定义了两个变量

结构的初始化

结构类型是虚的,结构变量是实的

结构成员

结构和数组有点像,数组用[ ]运算符和下标访问其成员,例如a[0]=10; ,结构用.运算符和名字访问其成员例如today.day pl.x pl.y

结构运算(数组无法做这两种运算)

要访问整个结构,直接用结构变量的名字; 对于整个结构,可以做赋值取地址,也可以传递给函数参数

pl=(struct point){5,10};//相当于pl.x=5;pl.y=10;

pl=p2;//相当于pl.x=p2.x;pl.y=p2.y;

结构指针

和数组不同,结构变量的名字并不是结构变量的地址,必须使用&运算符例如

struct date* pDate=&today;

结构作为函数参数

整个结构可以作为函数的值传入函数,这时候是在函数内新建一个结构变量,并复制调用者的结构的值

,也可以返回一个结构,与数组完全不同

c在函数调用时是传值的

用->表示指针所指的结构变量中的成员

数组结构

struct date dates[100];

struct date dates[]={

{4,5,2005},{2,4,2005}};

结构 数组 数组中的结构 结构中的结构 结构中的数组

main()成为c语言入口函数与c语言本身无关,启动代码程序调用需要一个叫main的地方,操作系统把你的可执行程序装载到内存里启动运行,调用main函数

用dev可以新建一个窗口进行绘图

绘图程序

void initWindow(const char title[],int left,int top,int width, int height);

void beginPaint();

void endpaint();

坐标系

在WINDOWS中,坐标是以像素点的数字来定义的。对于你创建出来的窗口,左上角是(0,0),x轴自左向右增长,y轴自上向下增长

终端窗口

如果需要scanf printf,需要首先initConsole();然后就能在那个窗口使用scanf printf

启动和结束绘图

void beginPaint();

void endPaint();

任何绘图函数的调用必须在这一对函数调用之间

画一个点

void putPixel(int x,int y,ACL_Color color);

ACL_Color getPixel(int x,int y);

颜色

RGB(r,g,b)

红色——>RGB(255,0,0)

BIACK,RED,GREEN,BLUE,CLAN,

typedef

声明新的类型的名字新的名字是某种类型的别名改善了程序的可读性

typedef struct{

int month;

int day;

int year;

}Date;

联合

存储,所有成员共享一个空间,同一时间只有一个成员是有效的,union的大小是其最大的成员

初始化,对第一个成员做初始化

posted @ 2026-01-25 08:38  wysy  阅读(5)  评论(0)    收藏  举报