#include <stdio.h>
//图元的类型
enum SHAPE_TYPE{
RECT_TYPE = 0,
CIRCLE_TYPE = 1,
TRIANGLE_TYPE = 2,
SHAPE_NUM,
};
//为了定义三角形的坐标而设
struct point{
float x;
float y;
};
//创建shape结构体
struct shape{
//int type;
enum SHAPE_TYPE type;
union {
struct {
float x;
float y;
float w;
float h;
}rect;
struct {
float c_x;
float c_y;
float r;
}circle;
struct {
struct point t0;
struct point t1;
struct point t2;
}triangle;
}u;
};
//初始化矩形
void init_rect_shape(struct shape *s, float x, float y, float w, float h)
{
s->type = RECT_TYPE;
s->u.rect.x = x;
s->u.rect.y = y;
s->u.rect.w = w;
s->u.rect.h = h;
return ;
}
//初始化三角形
void init_triangle_shape(struct shape *s,float a, float b, float c, float d,float e, float f)
{
s->type = TRIANGLE_TYPE;
s->u.triangle.t0.x = a;
s->u.triangle.t0.y = b;
s->u.triangle.t1.x = c;
s->u.triangle.t1.y = d;
s->u.triangle.t2.x = e;
s->u.triangle.t2.y = f;
return ;
}
//初始化圆
void init_circle_shape(struct shape *s, float a, float b, float r)
{
s->type = CIRCLE_TYPE;
s->u.circle.c_x = a;
s->u.circle.c_y = b;
s->u.circle.r = r;
return;
}
//输出图形
void draw_shape(struct shape *shapes, int count)
{
int i = 0;
for(i=0;i<count;i++)
{
switch(shapes[i].type)
{
case CIRCLE_TYPE:
printf("circle:%f, %f, %f\n", shapes[i].u.circle.c_x, shapes[i].u.circle.c_y, shapes[i].u.circle.r);
break;
case TRIANGLE_TYPE:
printf("triangle:%f, %f, %f, %f, %f, %f\n", shapes[i].u.triangle.t0.x, shapes[i].u.triangle.t0.y, shapes[i].u.triangle.t1.x, shapes[i].u.triangle.t1.y, shapes[i].u.triangle.t2.x, shapes[i].u.triangle.t2.y);
break;
case RECT_TYPE:
printf("circle:%f, %f, %f, %f\n", shapes[i].u.rect.x, shapes[i].u.rect.y, shapes[i].u.rect.w, shapes[i].u.rect.h);
break;
default:
break;
}
}
return ;
}
int main()
{
struct shape shape_set[3];
init_rect_shape(&shape_set[0], 100, 200, -100, 200);
init_triangle_shape(&shape_set[1], 10, 20, 30, -30, 40, -40);
init_circle_shape(&shape_set[2], 100, 200, 300);
draw_shape(shape_set, 3);
return 0;
}相关推荐
ArcGIS通过已知坐标点转面(通过excel文件,有工具可批量生成面要素)
通过使用ArcGIS中的工具,将坐标点XY数据转换成可视化的点线面矢量数据,更加方便快捷有效的获取对应信息
Multisim14.0仿真实战:从零搭建RS/JK触发器电路(附真值表+波形图)
本文通过Multisim 14.0软件,提供了从零搭建RS触发器和JK触发器电路的详细仿真实战教程。内容涵盖核心概念解析、电路搭建步骤、动态波形观测及真值表分析,重点探讨了RS触发器的非法状态问题以及JK触发器的四种工作模式,帮助读者直观理解时序逻辑电路的“记忆”功能与设计要点。
enum与typedef enum的用法
书到用时方恨少啊。。。。大一学过的东西都忘了。。。 Copy From:http://blog.sina.com.cn/s/blog_817a5eb6010146ad.html 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #define MON 1 #define TUE 2 #define WED
Camera metadata
Camera metadata
Unity类银河战士恶魔城学习总结(P103之前 Enemy相关 , 骷髅战士,状态机,敌人状态,)
udemy的Alex银河战士恶魔城,记录我自己的学习,代码会逐渐每一p更新,仅供参考学习。
C++程序设计语言学习笔记:结构、联合与枚举
1、struct是任意类型元素构成的序列。 struct Address{ const char* name; //"Jim Dandy" int number; //61 const char* street; //"South St" const char* town; //"New Providence" char state[2]; //'N''J' const char* zip; //"079
基于STM32L4XX、HAL库的 TMC2660C-PA 驱动程序设计
/ 默认灵敏度和电流。// 20/31最大电流。
C语言 结构体 联合 枚举
C语言 结构 联合 枚举
SAP-ABAP:SAP创建CDS视图(SQL语句创建)实例详解
通过Eclipse和ADT创建CDS视图是SAP开发中的一项重要技能。CDS视图不仅简化了数据建模,还提供了高性能和灵活性。掌握CDS视图的开发和使用,可以帮助你更好地支持SAP S/4HANA和Fiori应用的开发。
Python爬虫实战:爬取国家气象局台风路径数据的完整教程
国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;
结构体枚举和联合的介绍及使用
结构体枚举和联合的介绍及使用
【华为OD机试真题 新系统】1029、字符串处理 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)
【华为OD机试真题 新系统】1029、字符串处理 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
联合体(union)是允许一个变量通过不同的接口访问内存的一种数据类型,表示一个变量可以存储不同类型的值,而枚举是使用enum关键字定义一组相关且互斥的整形常量集合。本章阿森将和你学习联合体类型的声明,特点,有关大小的计算,还有枚举类型的声明,优点和使用。文章干货满满!学习起来吧😃!这次阿森和你一起学习联合体类型的声明,特点,然后进行相同成员的结构体和联合体对⽐,⼤⼩的计算,联合体应用,枚举类型的声明,优点和扫雷改造使⽤方法,阿森将下一节和你一起学习动态内存管理🚀。
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
【C语言】——联合体与枚举
摘要
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
C语言-结构体、联合体、枚举
c语言中的结构体、联合体、枚举的定义、语法以及应用
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
【C语言 |结构体 联合体 枚举】结构体、联合体、枚举详解
/这个;不能丢//定义了局部变量s1,s2关键字struct,它表示接下来是一个结构体Stu是结构名{}中的是成员列表,可以是不同数据类型的变量struct Stuint age;}s4,s3;//这个;不能丢////定义了全局变量s3,s4第三种:匿名结构体structint age;}s5;省略的结构体名,就无法组合结构体类型了,而无这种结构体类型,就不能再定义这种结构体类型的变量//像这种的就是错误的没有结构体名。
【C语言进阶】C语言进阶教程:利用结构体、联合体和枚举自定义数据类型
在C语言的浩瀚宇宙中,自定义类型如同璀璨星辰,为开发者们提供了无限的可能性和创造力。作为一门历史悠久且功能强大的编程语言,C语言不仅以其接近硬件的特性和高效的执行效率著称,更以其灵活的数据结构定义方式赢得了广泛的赞誉。而自定义类型,正是这一灵活性的集中体现
详解C语言结构体、枚举、联合体
结构体、枚举、联合体1.什么是结构体、枚举、联合体2.定义结构体2.1 包含结构体成员变量、variable2.2 tag、结构体成员变量2.3 用结构体声名变量2.4 用typedef 创建新类型2.5 两个结构体相互包含2.6 结构体变量初始化2.7 结构体指针3.枚举3.1 定义方式3.2 为什么用枚举3.3 枚举变量的定义3.4 实例3.5 枚举实际用途4.联合体4.1 与结构体区别4.2 定义 1.什么是结构体、枚举、联合体 结构体(struct)是由一系列具有相同类型或不同类型的数据项构成的
C语言 14 结构体 联合体 枚举
之前认识过很多种数据类型,包括整数、小数、字符、数组等,通过使用对应的数据类型,就可以很轻松地将数据进行保存了,但是有些时候,这种简单类型很难去表示一些复杂结构。
C语言——结构体(位段)、联合体、枚举
结构体、枚举、联合体,结构体位段
【C语言】结构体、枚举、联合体
结构体、枚举、联合体的详细使用方法
【C语言】联合体和枚举
前言这篇博客就把剩下的两个自定义类型联合体和枚举好好总结一下,让我们好好看看联合体和枚举到底是什么若有问题 评论区见感兴趣就关注一下吧1.联合体1.1联合体类型的声明像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。。给联合体其中一个成员赋值,其他成员的值也跟着变化。include//联合类型的声明unionUncharc;inti;
C语言自定义类型的介绍(结构体,枚举,联合体,位段)
⭐️前面的话⭐️ 大家好!在C语言中,有个叫“自定义类型”玩意,它究竟是什么呢?其实,就是字面意思,可以自己定义的类型就是自定义类型。具体说就是我们熟知的结构体,枚举,位段,联合体(共用体)。 划重点: 结构体,枚举,位段,联合体的定义。 结构体实现位段。 结构体,枚举,联合体内存对齐及其大小计算。
[C语言]结构体、位段、枚举常量、联合体
其实我们仔细分析一下,a作为占2比特的变量,结构体分给其第一个字节后两位,接着剩下的还是在第一个定义的int的四个字节内,所以依次剩下的6个比特以及12个比特分给了b,如所示区域,但是当分配给c的时候,c占用32个比特,第一个int所占的四个字节无法接纳那么大的内存,所以开辟了一段新的空间给它,但是上一个没用完的空间是不分配给c的,所以我们最终看到系统分配内存方式如下。当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体
结构体 基本概念 结构体类型的声明 结构的声明 特殊的声明 结构的自引用 结构体变量的定义和初始化 结构体的对齐规则: 为什么要内存对齐 修改默认对齐数 修改默认对齐数的预处理命令 实际例子 结构体传参 结构体实现位段(位段的填充) 位段 什么是位段 位段的内存分配 位段的跨平台问题 枚举 枚举的概念 枚举类型的定义 枚举的优点 枚举的使用 联合体(共用体) 联合体类型的定义 联合体的特点 联合大小的计算 利用联合体判断当前计算机的大小端存储
3万+



被折叠的 条评论
为什么被折叠?



