属性 方法c语言,C语言如何实现C++中对象属性和方法

在C++中,我们常见到用类定义一个对象,这个对象可以有他自己的属性(数据)和方法(函数),而在C语言的正常语法中,是禁止在结构体中定义函数的。

在一个关于触摸屏的驱动程序中发现,用C语言的也可以实现对象的方法(函数)。

首先定义一个按键的结构体。

6b4e5f581c429dc18baed956e1af2517.png

1、我们先来讨论第二个函数指针void(*btn_command)(); 我们用该结构体定义的对象想要使用这个函数指针实现方法的效果之前,需要对这个指针赋予一个同类型的函数指针(无形参的函数指针)。例如

8ff9c3e8283e519f49435de797f90a79.png

9eae2745be8e4d9462abd0631308409c.png

在这里函数的名字,即为指向该函数的指针。在使用此方法时,只需

11da59b21b350d765c10fa323608283c.png

我们又会想到,当我们需要的方法需要调用对象自身的属性(数据)时,我们改如何操作呢?

接下来我们看第一个函数指针。

2、void (*draw_btn)(void * btn); 他同样定义了一个函数指针,但他的入口参数需要一个任意类型的指针,我们在使用它时,需要用强制转换类型操作,将其转换为我们需要的指针类型(实参的指针类型)。这个方法在使用前,同样需要将他赋值为一个同类型函数的函数指针(此处是形参为一个任意类型的指针)。例如

7cc63c19a349ace2595fafbd1f16894f.png

cb9f7c183013726388707e4c697c4ae3.png

在下面的函数中,先将形参转换为我们需要的指针类型(Touch_Button *),在转入到一个同类型的指针中,就可以用同类型的指针调取该类型的属性了。

使用时,只需要将我们需要的对象的地址传入即可。如下,

e42b3fa17118b4778d6840528c8612bf.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务书

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务书 竞赛概述 1.1.竞赛时间 本次竞赛时间共为8小时,参赛选手自行安排任务进度,休息、饮水、如厕等不设专门用时,统一含在竞赛时间内。 1.2.竞赛内容 功能测试的测试计划设计、测试…

当当网新用户注册界面——JS代码

<span style"color:#ff9966;"><span style"font-size: 32px;"><strong>所有用到的图片都已上传&#xff0c;请在</strong></span></span><a target_blank href"http://download.csdn.net/detail/qq_34137397/…

Java 内存区域和GC机制

转载自 Java 内存区域和GC机制Java垃圾回收概况Java GC&#xff08;Garbage Collection&#xff0c;垃圾收集&#xff0c;垃圾回收&#xff09;机制&#xff0c;是Java与C/C的主要区别之一&#xff0c;作为Java开发者&#xff0c;一般不需要专门编写内存回收和垃圾清理代 码&a…

docker – 你应该知道的10件事

容器并不是一个全新的技术&#xff0c;但这并不妨碍Docker如风暴一样席卷整个世界。 如果你在IT圈里&#xff0c;你一定听说过Docker。就算与其他热门技术&#xff0c;如&#xff1a;Puppet/Chef&#xff0c;Hadoop或者MongoDB放在一起&#xff0c;Docker仍然让你耳目一新。 不…

c语言运行太短怎么毡筒,C语言编程中的常见问题-最新文档.doc

C语言编程中的常见问题-最新文档.doc激也浸簧哼贰罪匠智事帛棕错永荤腑亦蛋讳躇睁传耀如雾油瘤十倍骋代敌楼毒伟愿煎蜡斌牺脯莆义贴炳揣烧瑶馅熟旨渍暂躲孟幢漏件哭射酱昏差辱尤可耕宾谍拼渠乱御日癸拳柱络胺农迸效催窒踩移呈德舞耀弗纽懈禄幕吁廖恫纺赖赚念状币溪追旧隐溢候粪…

解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题

在博问中&#xff08;.net core怎么实现邮件发送&#xff09;知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题&#xff0c;自已实测也遇到同样的问题&#xff0c;而用自己搭建的邮件服务器没这个问题。 于是&#xff0c;向阿里云提交了工单。。。在提供了TCP抓包数据后…

JVM内存管理------垃圾搜集器参数精解

转载自 JVM内存管理------垃圾搜集器参数精解垃圾搜集器选择参数UseSerialGC&#xff1a;开启此参数使用serial & serial old搜集器&#xff08;client模式默认值&#xff09;。UseParNewGC&#xff1a;开启此参数使用ParNew & serial old搜集器&#xff08;不推荐&a…

笑死了,打错一个字,竟然...

淘宝上&#xff0c;让人快活的打字错误&#xff1a; -有大妈吗&#xff1f;&#xff08;大码&#xff09; -亲&#xff0c;客服最大的27岁 -你能活到付款吗&#xff1f;&#xff08;货到付款&#xff09; -亲&#xff0c;我尽量 -你们有尸体店吗&#xff1f;&#xff08;实…

c语言模拟题答案及解析,全国计算机等考二级C语言模拟试题,答案及解析一

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼(18)下列程序的输出结果是_________。Main(){ int i&#xff1b;for(i1&#xff1b;il&#xff1b;i){ if(i>4){printlf("&#xff05;d"&#xff0c;i)&#xff1b;break&#xff1b;}}printf("&#xff05…

.NET Core全新路线图

.NET Core / ASP.NET Core 1 RTM发布两周后&#xff0c;社区也很积极&#xff0c;收到了非常多的反馈&#xff0c;上周五微软的scott Hunter 在dotnet团队官方博客上发布了.NET Core全新的路线图https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/这个路线…

JVM内存管理------垃圾搜集器精解

转载自 JVM内存管理------垃圾搜集器精解引言在上一章我们已经探讨过hotspot上垃圾搜集器的实现&#xff0c;一共有六种实现六种组合。本次LZ与各位一起探讨下这六种搜集器各自的威力以及组合的威力如何。为了方便各位的观看与对比&#xff0c;LZ决定采用当初写设计模式时使用…

最新开发android版本,Android版本检测升级

我们应该都有类似的使用体验&#xff0c;当一款APP需要更新是&#xff0c;进入界面会提醒有新的更新是否更新&#xff0c;这里有那么几个步骤1、首先检测当前版本2、判断服务器中版本3、如果有更新则点击更新&#xff0c;下载安装包&#xff0c;下载完成后自动安装具体代码怎么…

每一个C#开发者必须知道的13件事情

1. 开发流程 程序的 Bug 与瑕疵往往出现于开发流程当中。只要对工具善加利用&#xff0c;就有助于在你发布程序之前便将问题发现&#xff0c;或避开这些问题。 标准化代码书写 标准化代码书写可以使代码更加易于维护&#xff0c;尤其是在代码由多个开发者或团队进行开发与维护时…

利用命令来打开所有程序,这个装逼给满分!

如何利用命令来实现打开程序&#xff1f;这样我们还可以让桌面一个图标不留&#xff01;首先我们在桌面新建一个文件夹&#xff0c;然后以配音命名&#xff0c;这个时候我们将桌面上的图标拖进这个文件夹。 然后将我们的图标名称修改成好记的名称&#xff0c;比如&#xff1a;…

JVM内存管理------GC算法精解(复制算法与标记/整理算法)

转载自 JVM内存管理------GC算法精解&#xff08;复制算法与标记/整理算法&#xff09;本次LZ和各位分享GC最后两种算法&#xff0c;复制算法以及标记/整理算法。上一章在讲解标记/清除算法时已经提到过&#xff0c;这两种算法都是在此基础上演化而来的&#xff0c;究竟这两种…

android url回调json,【求助】本地页面如何取某个URL返回的json

[HTML] 纯文本查看 复制代码getJSON获取数据#divbox{ border:1px solid #ddd; width:500px; margin:0 auto;}.load{ background:#eee; height:30px;}$(function () {//点击按钮获取数据$("#btn").click(function () {$.ajax({//json链接url:"https://h5.jinjied…

ASP.NET Core 十种方式扩展你的 Views

原文地址&#xff1a;http://asp.net-hacker.rocks/2016/02/18/extending-razor-views.html作者&#xff1a;Jrgen Gutsch翻译&#xff1a;杨晓东(Savorboard) 现在&#xff0c;已经有很多种方式来扩展Razor视图了&#xff0c;我们循循渐进&#xff0c;先从最简单的开始。如果你…

JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)

转载自 JVM内存管理------GC算法精解&#xff08;五分钟让你彻底明白标记/清除算法&#xff09;相信不少猿友看到标题就认为LZ是标题党了&#xff0c;不过既然您已经被LZ忽悠进来了&#xff0c;那就好好的享受一顿算法大餐吧。不过LZ丑话说前面哦&#xff0c;这篇文章应该能让…

鸿蒙 电视 安卓,华为鸿蒙2.0来了!打通手机、电视、PC全平台,Mate 40 整装齐发...

华为鸿蒙2.0来了&#xff01;打通手机、电视、PC全平台&#xff0c;Mate 40 整装齐发2020-07-05 15:52:041点赞0收藏1评论7月5日消息&#xff0c;据国外知名爆料玩家 Teme 透露&#xff0c;华为今年秋季发布会上除了将发布华为 Mate 40 系列旗舰机型外&#xff0c;还将带来 EMU…

跳槽穷半年,改行穷三年,说的太好了!

跳槽穷半年&#xff0c;改行穷三年。献给每天喊辞职、想辞职的人或周期性喊辞职、想辞职的人&#xff01; 1 不要轻易离开团队&#xff0c;否则你要从零做起 。2 不要老想着做不顺就放弃&#xff0c;哪个团队都有问题&#xff0c;哪个团队都有优点。3 .跟对领导很重要&#xff…