3分钟读懂C语言函数:这些例子一看就懂!|一键删除账户教学

理论+应用教学篇

最近发现,有些小伙伴对C语言的函数有些难以理解,其实呢,C语言的函数很好理解,只不过部分人在学习的时候,没有找到好的例子来类比理解而已。这篇文章会教大家如何去理解C语言的函数,也就是俗称的讲理论,但是这篇文章的理论会十分有利于大家来理解。

相信大多数人都不怎么喜欢听别人“讲理论”,而是喜欢实际的操作一遍,小编也深有体会哈。所以!这篇文章先让大家理解函数字面上的意思,然后教大家把“函数知识”应用到现实中来,怎么应用呢?这里教大家做一个小程序——一键删除对方电脑账户。

该程序实例仅用来当做教学例子哦

理论篇

函数是什么?

对于这个问题,官方的解释是“函数是用于完成特定任务的程序代码的自包含单元”,但是究竟怎么理解这句话呢?

举个例子,C语言中的printf()函数,这个函数就是用于完成特定任务的程序代码集合,用于完成什么特定任务呢?printf()能将字符打印到屏幕上,这就是它所完成的任务。但是什么是自包含呢?现在我们举个例子↓

自包含

非自包含

从上面这个例子来看,自包含说的是,这个函数能独立运行、编译、可移植,不需要其他函数来支持,例如,图中的非自包含,这个函数离开了printf()函数就不能运行了,所以,这个算是不独立运行的了。

小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程

为什么要使用函数呢?

用简单一句话来回答这个问题:“为了方便、为了安全”。

为了方便是怎么回事呢?首先,函数是一个可移植的代码集合,也就是说,一个完整的函数能够在任何地方使用,函数就是一个模块。一个函数会实现某一个特定功能,例如:“使计算机嗡鸣”,要实现这个功能可能需要上百行代码,而我们为了方便,将这些代码封装在这个函数里面,我们要使计算机嗡鸣的时候,只要调用函数就行了。举个例子↓

假设汽车是一个程序,而传动系统、制动系统、行走系统、转向系统我们称它为函数,程序离开函数就无法运行,而函数则可以随便移植,例如,一辆汽车的制动系统一直到另一辆车身上也能运行

为什么是安全的呢?很多函数它能够完成特定的功能,而函数里面具体的算法、代码对外是不可见的、是封装好的,使用函数的人只需要了解这个函数能够完成什么功能就行了,并不需要了解函数内部具体的实现算法。这个规则在开发软件的时候特别重要。你想一下,你辛辛苦苦写好的程序,被别人不费吹灰之力就破解了,这是什么感受呢?

如何用一句话来理解函数?

一般来说,一个C函数会有一个参数,例如printf("XX"),“‘XX’”就是参数,有时候一个函数还能对外输出,例如printf()将“XX”打印到屏幕上,这也是一种输出

要理解很简单,假如你的手里有一个苹果,和一个黑盒子,你把苹果放到黑盒子里,再重新拿出来它就变成了一个梨。这个例子中,苹果是参数,黑盒子是函数,梨是输出

应用篇——一键删除对方账户

这个程序比较简单,我们要做一个能删除计算机账户的函数。这里,函数没有参数,它的功能是:“删除特定的账户”。这里小编用自己的电脑做一个测试,首先在电脑上建立一个名为“H”的账户,然后利用C程序一键删除它!注意:生成的这个程序要以管理员身份运行哦。

别小看这个程序,如果在这个程序之上添加一些特定的功能,就可以在不知不觉中将电脑中的Administrator用户删除,然后把自己设置的账户变成系统超级管理员,这个电脑的“超级权限”就归你了。

下面是源码↓

以上程序实例仅用于举例,不要过度解读哦

原文链接:https://www.jianshu.com/writer#/notebooks/28627489/notes/33368922

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

为什么用 Java:一个 Python 程序员告诉你

说实话,本人刚开始的时候也是同样的反应。但是由于Java的类型安全,执行性能和坚如磐石的工具,我渐渐地开始欣赏Java。同时我注意到,现在的Java已今非昔比—...

681
来自专栏iOS技术

何为代码质量?——用脑子写代码引言正文总结

为什么项目维护困难、BUG 反复?实际上很多时候就是代码质量的问题。代码架构就像是建筑的钢筋结构,代码细节就像是建筑的内部装修,建筑的抗震等级、简装或豪装完全取...

652
来自专栏窗户

shell编程/字库裁剪(3)——验证

  程序写完了,必须要验证,这是重要的方法论。因为如果不验证,则不会知道程序写的对还是不对。学过人工智能或者控制论都知道,反馈非常重要,反馈形成闭环,可以用来指...

21710
来自专栏iKcamp

翻译连载 | 第 10 章:异步的函数式(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇

原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 第 10 章:异步的函数式(上)...

2099
来自专栏算法与数据结构

PTA 银行排队问题之单队列多窗口服务

假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾...

31110
来自专栏Java学习网

Java虚拟机工作原理之JVM用到的3大计算机核心功能,重点是方法调用

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

1723
来自专栏Crossin的编程教室

【Python 第33课】 处理文件中的数据

我们已经知道了如何读取和写入文件。有了这两个操作文件的方法,再加上对文件内容的处理,就能写一些小程序,解决不少日常的数据处理工作。 比如我现在拿到一份文档,里面...

3378
来自专栏Android开发经验

ExpandableStickyListHeadersListView遇到的一个问题

1394
来自专栏CSDN技术头条

十五条有用的Golang编程经验

本文作者在很短的时间内就从对Golang一无所知到开发出真正的产品。在学习Golang的过程中,他总结出十五条编程经验以分享给读者。以下是译文。 ? 像许多其他...

3048
来自专栏华章科技

入门科普:什么时候要用Python?用哪个版本?什么时候不能用?

Python使用面向对象编程(object-oriented programming,OOP)和构造,你可以像任何其它面向对象的语言一样使用它,譬如Java。

1222

扫码关注云+社区