当前位置: 首页 > news >正文

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的大小是其最大的成员

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

http://www.jsqmd.com/news/297291/

相关文章:

  • 解锁Windows定制新境界:Windhawk个性化工具深度探索
  • 免费玩转Gemma 3:270M模型Unsloth训练教程
  • 三步打造高效知识管理系统:Light Reading Cloud的知识工作者效率解决方案
  • 4个核心技巧:用TRL强化学习实现大模型对齐与PPO优化
  • YOLOv9官方镜像使用全解析,新手避坑必备手册
  • 3大核心功能让你成为AI背景移除大师:革命性图像处理实战指南
  • 解锁边缘AI:5个维度掌握微控制器机器学习部署
  • RePKG完全掌握指南:从入门到高级应用的探索之旅
  • 如何通过AI技术高效获取B站硬核会员资格
  • 手把手教学:如何用 ms-swift 微调 Qwen2.5-7B
  • 企业级架构解决方案:现代化开发框架的深度剖析与实践验证
  • 5个高效解决方案:零基础手机视频合并完整指南
  • Axure RP 11 Mac中文界面完整解决方案:从问题诊断到性能优化的实战指南
  • 中小企业多端商城解决方案:数字化转型的高效路径
  • 5步打造原神智能助手:告别重复刷本的自动化解决方案
  • 从0开始玩转GPT-OSS:一镜像一网页,轻松实现大模型推理
  • 小白必看!YOLOE镜像快速搭建图文全解
  • 图解说明Allegro导出Gerber文件全过程
  • 高级参数怎么调?手把手教你优化检测效果
  • 用YOLOv9镜像做推理,一张图搞定全流程
  • YOLOv10-S实测:比RT-DETR快1.8倍,效果真不错
  • Z-Image-Turbo性能优化:让AI绘画更高效
  • 数据库触发器中的NEW和OLD关键字用法全面讲解
  • Vetur中Vue2 props类型检查配置:通俗解释
  • 通过NDIS中间层实现虚拟串口传输
  • UDS 19服务故障码读取:深度剖析DTC存储结构
  • 小团队如何靠 XinServer 做到快速上线?
  • Elasticsearch向量检索构建实时推荐引擎:操作指南
  • Qwen3-14B突破:双模式自由切换的AI推理新范式
  • 开源2D CAD零基础入门:从安装到绘图的全面指南