枚举、结构体、联合体的简单应用程序-C语言

BUPT软件安全实验三 可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。 阅读详情
#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;
}

VMware ESXi 7.0下Intel网卡SR-IOV配置实战:解决虚拟化网络延迟问题 本文详细介绍了在VMware ESXi 7.0环境下为Intel网卡配置SR-IOV(单根I/O虚拟化)的完整实战流程。通过硬件辅助直通技术,虚拟机可直接访问物理网卡资源,有效绕过虚拟化层瓶颈,从而显著降低网络延迟和CPU开销,适用于金融交易、实时计算等对性能敏感的场景。 阅读详情

相关推荐

ArcGIS通过已知坐标点转面(通过excel文件,有工具可批量生成面要素)

通过使用ArcGIS中的工具,将坐标点XY数据转换成可视化的点线面矢量数据,更加方便快捷有效的获取对应信息

qq_41046162的博客 3万+

Multisim14.0仿真实战:从零搭建RS/JK触发器电路(附真值表+波形图)

本文通过Multisim 14.0软件,提供了从零搭建RS触发器和JK触发器电路的详细仿真实战教程。内容涵盖核心概念解析、电路搭建步骤、动态波形观测及真值表分析,重点探讨了RS触发器的非法状态问题以及JK触发器的四种工作模式,帮助读者直观理解时序逻辑电路的“记忆”功能与设计要点。

weixin_29175469的博客 275

enum与typedef enum的用法

书到用时方恨少啊。。。。大一学过的东西都忘了。。。 Copy From:http://blog.sina.com.cn/s/blog_817a5eb6010146ad.html 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #define MON  1 #define TUE   2 #define WED  

tracyliang223的专栏 2805

Camera metadata

Camera metadata

weixin_42136255的博客 2529

Unity类银河战士恶魔城学习总结(P103之前 Enemy相关 , 骷髅战士,状态机,敌人状态,)

udemy的Alex银河战士恶魔城,记录我自己的学习,代码会逐渐每一p更新,仅供参考学习。

suzh1qian的博客 1633

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

技术之道,其路之久远,需淡然与仔细 1028

基于STM32L4XX、HAL库的 TMC2660C-PA 驱动程序设计

/ 默认灵敏度和电流。// 20/31最大电流。

zhusl6688的博客 384

C语言 结构体 联合 枚举

C语言 结构 联合 枚举

qq_58116869的博客 1289

SAP-ABAP:SAP创建CDS视图(SQL语句创建)实例详解

通过Eclipse和ADT创建CDS视图是SAP开发中的一项重要技能。CDS视图不仅简化了数据建模,还提供了高性能和灵活性。掌握CDS视图的开发和使用,可以帮助你更好地支持SAP S/4HANA和Fiori应用的开发。

baidu_35680696的博客 1824

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1025

结构体枚举和联合的介绍及使用

结构体枚举和联合的介绍及使用

weixin_63954483的博客 334

【华为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,

KJ.JK 218

【C语言】一篇文章深入解析联合体和枚举且和结构体的区别

联合体(union)是允许一个变量通过不同的接口访问内存的一种数据类型,表示一个变量可以存储不同类型的值,而枚举是使用enum关键字定义一组相关且互斥的整形常量集合。本章阿森将和你学习联合体类型的声明,特点,有关大小的计算,还有枚举类型的声明,优点和使用。文章干货满满!学习起来吧😃!这次阿森和你一起学习联合体类型的声明,特点,然后进行相同成员的结构体和联合体对⽐,⼤⼩的计算,联合体应用,枚举类型的声明,优点和扫雷改造使⽤方法,阿森将下一节和你一起学习动态内存管理🚀。

a_sen的博客 3303

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【C语言】——联合体与枚举

摘要

yusjushd的博客 1544

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C语言-结构体、联合体、枚举

c语言中的结构体、联合体、枚举的定义、语法以及应用

m0_74147998的博客 2008

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;省略的结构体名,就无法组合结构体类型了,而无这种结构体类型,就不能再定义这种结构体类型的变量//像这种的就是错误的没有结构体名。

YKX0000的博客 2656

【C语言进阶】C语言进阶教程:利用结构体、联合体和枚举自定义数据类型

在C语言的浩瀚宇宙中,自定义类型如同璀璨星辰,为开发者们提供了无限的可能性和创造力。作为一门历史悠久且功能强大的编程语言,C语言不仅以其接近硬件的特性和高效的执行效率著称,更以其灵活的数据结构定义方式赢得了广泛的赞誉。而自定义类型,正是这一灵活性的集中体现

EterNity_TiMe_的计算机学习之路 1867

详解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)是由一系列具有相同类型或不同类型的数据项构成的

Ja_king_的博客 4281

C语言 14 结构体 联合体 枚举

之前认识过很多种数据类型,包括整数、小数、字符、数组等,通过使用对应的数据类型,就可以很轻松地将数据进行保存了,但是有些时候,这种简单类型很难去表示一些复杂结构。

天河有尽后为涯,星海无边前作岸。 1327

C语言——结构体(位段)、联合体、枚举

结构体、枚举、联合体,结构体位段

2301_77529159的博客 2188

【C语言】结构体、枚举、联合体

结构体、枚举、联合体的详细使用方法

学了就忘是正常现象 1351

【C语言】联合体和枚举

前言这篇博客就把剩下的两个自定义类型联合体和枚举好好总结一下,让我们好好看看联合体和枚举到底是什么若有问题 评论区见感兴趣就关注一下吧1.联合体1.1联合体类型的声明像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。。给联合体其中一个成员赋值,其他成员的值也跟着变化。include//联合类型的声明unionUncharc;inti;

m0_74091744的博客 1808

C语言自定义类型的介绍(结构体,枚举,联合体,位段)

⭐️前面的话⭐️ 大家好!在C语言中,有个叫“自定义类型”玩意,它究竟是什么呢?其实,就是字面意思,可以自己定义的类型就是自定义类型。具体说就是我们熟知的结构体,枚举,位段,联合体(共用体)。 划重点: 结构体,枚举,位段,联合体的定义。 结构体实现位段。 结构体,枚举,联合体内存对齐及其大小计算。

未见花闻的博客 1216

[C语言]结构体、位段、枚举常量、联合体

其实我们仔细分析一下,a作为占2比特的变量,结构体分给其第一个字节后两位,接着剩下的还是在第一个定义的int的四个字节内,所以依次剩下的6个比特以及12个比特分给了b,如所示区域,但是当分配给c的时候,c占用32个比特,第一个int所占的四个字节无法接纳那么大的内存,所以开辟了一段新的空间给它,但是上一个没用完的空间是不分配给c的,所以我们最终看到系统分配内存方式如下。当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。

azurehan01的博客 2032

C语言中的“三体”大佬们知道是什么吗? —— 结构体、枚举、联合体

结构体 基本概念 结构体类型的声明 结构的声明 特殊的声明 结构的自引用 结构体变量的定义和初始化 结构体的对齐规则: 为什么要内存对齐 修改默认对齐数 修改默认对齐数的预处理命令 实际例子 结构体传参 结构体实现位段(位段的填充) 位段 什么是位段 位段的内存分配 位段的跨平台问题 枚举 枚举的概念 枚举类型的定义 枚举的优点 枚举的使用 联合体(共用体) 联合体类型的定义 联合体的特点 联合大小的计算 利用联合体判断当前计算机的大小端存储

Yawesh的博客 1390
上一篇: 学习 UNIX网络编程卷1:套接字 笔记1-实现一个简单的回射客户服务器程序
下一篇: malloc的简单使用-c语言程序
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值