c语言的积木编程,c语言入门第3节,掌握它就能随心所欲的编程了,自己造积木...

article/2025/10/7 12:53:01

前面两节介绍了如何快速搭建 C 语言开发学习环境,并且给出并解释了 hello world 的代码。上一节介绍了C语言的函数,应该注意到,到目前为止,我们使用的函数都是现有的系统函数(例如 printf,sin 等函数)。事实上,实际需求通常是非常复杂的,只依靠现有的函数很难完成。好在我们可以根据需求,自己定义 C 函数。

fffad7993050

image

可以把一个函数看作是一块积木,各种各样的积木才能堆积成复杂的建筑。只有几种积木,能完成的建筑太有限了,如果能够自己造各种各样的积木,再复杂的建筑也能完成。

通过前面两节的内容,我们已经了解函数定义的语法了:

返回值类型 函数名(参数列表)

{

语句列表

}

注意函数名在相应可见域内要保持唯一性,例如,在 main 函数所在文件里定义的函数名不能也为 main。再啰嗦一下 main 函数,主要是因为它是默认的入口函数,比较特殊。

Old Style C的风格的 main 函数定义写成 main(){...} 形式,不写返回值类型也不写参数列表。Old Style C规定不写返回值类型就表示返回int型,不写参数列表就表示参数类型和个数没有明确指出。这种宽松的规定会导致很多复杂的Bug产生,现在的 C 也保持了这种写法的兼容,但是鉴于它可能会产生 bug,还是不要这样写。

其实系统在调用 main 函数时是传参数的,所以 main 函数最标准的形式应该是 int main(int argc, char * argv[]),这种参数传递在 linux 下使用起来非常方便,以后用到了再详细解释。C标准也规定了 int main(void) 这种形式,如果不使用系统传进来的两个参数也可以写成这种形式。但除了这两种形式之外,以其它形式定义main函数都是错误的或不可移植的。

fffad7993050

image

自定义函数

在了解了自定义函数的一些限制后,很容易就可以写出如下代码。下面的代码中,我们定义了 printA 函数,它的参数为空,也没有返回值,仅仅是打印出一个字母 “A”。

#include

#include

void printA(void)

{

printf("A\n");

}

int main()

{

printA();

return 0;

}

我们在 codeblocks 里执行它,发现程序在控制台中打印出了字母 A。

关于 codeblocks 的安装和使用,可参照第一节。

fffad7993050

image

以后如果想打印 A,只需要执行 printA 函数就可以了。更进一步的,我们自己定义的 printA 函数也可以当做系统函数(例如)一样嵌套使用,请看如下代码:

#include

#include

void printA(void)

{

printf("A\n");

}

void print2A(void)

{

printA();

printA();

}

int main()

{

print2A();

printf("----\n");

print2A();

return 0;

}

我们又新定义了一个函数 print2A,它的功能就是在控制台打印两个 A。在 codeblocks 里执行,发现与预期一致。

fffad7993050

image

体会

从上面的简单例子中,可以总结出以下信息:

同一个函数可以调用多次。

可以用一个函数去调用另一个函数,第二个函数可以去调用第三个函数。

调用自定义的函数,是通过我们取的名字调用的,例如 main 函数中调用 print2A();

函数可以使代码更简洁,原本打印两个 A 需要两行代码,现在只需要 print2A 一行就可以了。

你可能会说,我定义 print2A 就用了 5 行啊,哪里简洁了。可是,以后只要遇到需要打印两个 A 的地方,我都可以调用 print2A,如果有 10 个地方需要打印两个 A 呢?另外,如果有一天,我想在打印两个 A 的时候不换行,那我只需要修改 printA,把里面的 “\n”删掉就可以了,而不用去找那 10 个需要打印两个 A 的地方逐个修改。

读代码和读文章不一样,按从上到下从左到右的顺序读代码未必是最好的。比如上面的例子,按顺序应该是先看 printA 再看 print2A 再看 main。不过,如果换一个角度,按代码的执行顺序来读也许会更好:

fffad7993050

image

因为 main 是入口函数,所以第一句要执行的就是 print2A 函数,那它是什么功能呢?于是目光移到 print2A 函数,它的第一句是 printA 函数,于是进入 printA 函数。奥,知道了 print2A 先要打印一个 A,然后又要执行 printA 函数,又打印了一个 A。这下知道了,main 函数里的第一句要打印两个 A。

实际上,在很多大型项目中,要熟悉它的代码结构,第一件事往往就是找到入口函数。


http://chatgpt.dhexx.cn/article/mJwD4tLl.shtml

相关文章

等边三角形的积木编程

用Scratch里的画笔,可以很方便的画出等边三角形。步骤如下: 1、定义"等边三角形"积木 点击Scratch里的"自制积木" --》制作新的积木 --》直线 --》添加4个参数,如图(1)、(2)所示: 图(1) 定义"等边三角…

积木编程软件

当然这种观点是很荒谬的,不会编程不等于文盲。虽然大多数父母都有文化和读写能力,但是大多数父母都不是程序员,也不知道程序员需要什么样的技能。格物斯坦认为:针对孩子们的编程书籍给出的都是一些问题的“标准”答案。如果你的孩…

金字塔的积木编程

金字塔是一个上尖下方的四面体,它的截面是一个三角形,可以用长方形的砖块去堆叠成一个大的三角形来表示金字塔。     下面介绍使用Scratch来画金字塔。 1、定义"砖块"积木 图(1) 定义"砖块"积木 图(2) "砖块"积木代码 …

OpenBlock Desktop v2.3.1积木编程

最新版 2.3.1 Release OpenBlock Desktop v2.3.1 openblockcc/openblock-desktop GitHubhttps://github.com/openblockcc/openblock-desktop/releases/tag/v2.3.1 新功能 用户可以在串口终端中使用回车键发送数据。提高 esp32/8266 的默认上传波特率以提高上传速度。删除 es…

python积木编程软件_积木编程软件手机版下载

积木编程软件是可以在线可以学习编程的软件,平台给用户提供了大量的编程学习教程,软件还支持在线编程,学习内容丰富,让用户学习起来不会枯燥乏味,就算你是零基础的小白,也可以体验到编程的乐趣。 积木编程官方简介 积木…

零代码积木编程案例分享

和大家分享一个通过积木编程技术实现的复杂业务系统的案例,主要比较传统有代码和零代码积木编程在项目各个阶段的人力投入和成本比较。 客户是一家工业丝线工厂,期望实现生产、仓库、设备的管理,同时连线近百台设备,还要集成AGV、…

时钟的积木编程

家里壁挂的时钟滴答滴答响着,里面有时针、分钟和秒针。在时钟刻度盘里,秒针每60秒走完一周,即秒针的最小角度为360/60 6;分针每60分钟走完一周,即分针的最小角度为360/60 6;时针每12小时,走完一…

长方形的积木编程

用Scratch画长方形有多种方法,可以用一个“点长宽”来画,也可以使用"长方形的2个对角顶点来画",还可以使用"长翻转90宽翻转90来画"。 1、"点长宽"方式 1.1 定义"直线"积木 点击Scratch左侧的&quo…

Netsparker介绍

Netsparker是一款综合型的web应用安全漏洞扫描工具,它分为专业版和免费版,免费版的功能也比较强大。Netsparker与其他综合性的web应用安全扫描工具相比的一个特点是它能够更好的检测SQL Injection和 Cross-site Scripting类型的安全漏洞。‍‍ 转载于:ht…

使用Netsparker扫描及**某站点

1.1使用Netsparker扫描及某站点 目前市面上漏洞扫描软件有多款,前面介绍了一些扫描软件例如awvs对目标站点进行扫描,其实国外还有一款扫描软件Netsparker也挺厉害,扫描误报率低,扫描效果还不错。在本文中,对一个目标站点进行扫描,并未发现高危漏洞,但通过列目录漏洞…

开源的网络监控工具:Sniffnet,简单而有趣!

在当今数字化的世界中,网络监控工具对于管理和保护网络的安全至关重要。网络管理员和安全专业人员需要一种高效且易于使用的工具,以监视和分析网络流量,识别潜在的安全威胁和性能问题。Sniffnet 是一个开源的网络监控工具,它提供了…

Netspark自动批量扫描powershell脚本

脚本需要创建2个文件,1个文件夹,都放到Netsparker目录下,将脚本中涉及到netspark目录的修改成自己的目录。 注意:Netsparker目录不能含有中文名。 文件1:脚本文件,文件名auto.ps1,内容如下&am…

WebSocket in ASP.NET Core

回到目录 一、WebSocket WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP有1.1和1.0之说&#…

NetScaler

NetScaler 简介 Citrix NetScaler 产品是一种应用交换机,用于执行特定于应用的流量分析,从而智能地分配和优化 Web 应用 4 - 7 层 (L4– L7) 的网络流量,并确保其安全。 例如,NetScaler 根据单个 HTTP 请求而非持续的 TCP 连接做出…

SocketTools.NET 11.0 Crack

在所有 HTTP 客户端组件中添加对 HTTP/2.0 协议的支持。 2023 年 5 月 17 日 - 10:58新版本 特征 在所有 HTTP 客户端组件中添加了对 HTTP/2.0 协议的支持。 更新了 TLS 1.2(及更高版本)和 SSH 2.0 的安全选项,以使用 Microsoft Windows 11 和…

四款Web扫描器

四款扫描器: appscan IBM公司 awvs 国外 xray 长亭科技 Netsparker 俗称“鲨鱼” 另外补充:绿盟极光、安恒明鉴。 一、appscan 本次案例:版本10.0.4破解版,安装完成后许…

ASP.NETCore

0. ASP.NETCore 介绍 ASP.NETCore是一个新的开源和跨平台的框架,用于构建如Web应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core应用可运行于.NET Core和完整的.NET Framework之上。构建它的目的是为那些部署在云…

基于asp.netCoreWebApi的webSocket通信示例(net6)

背景: 在阿里云服务器中搭建了常规的tcp server服务(基于.net framework 4.0)。用以实现远程控制家里的鱼缸灯,办公室的电脑开关机等功能。客户端采用PC桌面端和微信小程序端。 服务端:tcp server(基于.net framework …

超轻量级Web安全漏洞扫描工具Netsparker使用教程介绍

Netsparker是一款web应用安全漏洞扫描工具 Netsparter官网:https://www.netsparker.com/web-vulnerability-scanner/,与其他安全扫描工具相比更好检测SQL注入和跨站脚本攻击类型的安全漏洞。 打开工具,点击start a new scan,选择…

黑客最常用的10款黑客工具

以下所有这些工具都是捆绑在一起的Linux发行版,如Kali Linux或BackBox,所以我们一定会建议您安装一个合适的Linux黑客系统,使您的生活更轻松 - 尤其是因为这些黑客工具可以(自动)更新。 1、Nikto(网站漏洞…