前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言】详解函数(下)(庖丁解牛版)

【C语言】详解函数(下)(庖丁解牛版)

作者头像
埋头编程
发布于 2024-10-16 09:21:18
发布于 2024-10-16 09:21:18
13000
代码可运行
举报
文章被收录于专栏:C/C++C/C++
运行总次数:0
代码可运行

1. 前言

详解C语言函数(上)的链接:http://t.csdnimg.cn/EGsfe

经过对函数的初步了解之后,相信大家已经对C语言标准库里的函数已经有初步的认知了,并且还学会了如何自定义函数。

在之前我们学过的数据类型中,有整型、字符型、浮点型、布尔类型还有数组。这就会引发一个问题,我们说形参相当于我们给函数的一个可操作的初始变量的值,而在我们之前举的例子中,我都是用整型变量作为形参。那如果我用数组作为形参,又会是怎么样的呢?那么,在本文中就会给大家介绍,数组作为形参的效果。

另外,还会讲解如果函数的函数体里面还有个函数,又会是什么情况。

那么,让我们一起扬帆起航吧!!!🚢🚢🚢

2. 数组做函数形参

在使用函数解决问题时,我们肯定会遇到一种情况:对数组里面的元素进行操作。那这就意味着,我们得把数组作为参数传递给函数,让函数来帮我们处理。那在主函数把参数传递给函数的过程中,会发生什么情况呢?这难免会引起我们对此的一泡浓厚兴趣。

我们以基本现象来逐步深入问题的本质: 假如,现在要求你写一个功能:在一个函数将整个数组的内容,全部置为-1,在写一个函数打印数组的内容。

简单思考一下,不难写出主函数里面的基本框架:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int sz = sizeof(arr) / sizeof(arr[0]); //计算数组元素的个数
	set_arr(); //作用:将数组里面的元素都置为-1。里面的参数有待填写
	print_arr(); //作用:打印整个数组的元素。里面的参数有待填写
	return 0;
}

这⾥的set_arr函数要能够对数组内容进⾏设置,就得把数组作为参数传递给函数,同时函数内部在设置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。所以我们需要给set_arr传递2个参数,⼀个是数组,另外⼀个是数组的元素个数。仔细分析print_arr也是⼀样的,只有拿到了数组和元素个数,才能遍历打印数组的每个元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int sz = sizeof(arr) / sizeof(arr[0]); //计算数组元素的个数
	set_arr(arr,sz); //作用:将数组里面的元素都置为-1。
	print_arr(arr,sz); //作用:打印整个数组的元素。
	return 0;
}

数组作为参数传递给了set_arr和print_arr函数了,那么这两个函数具体如何设计呢?

在此之前,我们就要得先了解数组传参的几个重要的知识点了(敲黑板,干货来了):

  1. 函数的形式参数要和函数的实参个数匹配
  2. 函数的是参数数组,形参也可以写成数组的形式
  3. 形参如果是一维数组,数组的大小可以省略不写
  4. 形参如果是二维数组,行可以省略,但列不可以省略
  5. 数组传参时,形参是不会创建新的数组的
  6. 形参操作的数组和实参的数组是同一数组

根据上述的信息,我们可以实现这两个函数了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void set_arr(int arr[], int sz)
{
	int i = 0;
	for(i = 0; i < sz; i++)
	{
		arr[i] = -1;
	}
}

void print_arr(int arr[], int sz)
{
	int i = 0;
	for(i = 0; i< sz; i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
}

这样的完成了我们的要求了。相信通过上述的例子和讲解,你已经大概清楚了数组作为函数的参数时,是如何设计自定义函数的形参,以及如何在函数内操作数组的了。

关于数组作为函数参数进行传参的过程中,还有更多的细节,碍于篇幅的限制,目前只需要了解到这里就已经很不错了。后续我也会写一篇关于数组作为函数参数传参细节的文章,到时候希望大家来捧场。🥺

3. 函数嵌套调用和链式访问

有些读者可能对这个概念比较陌生,那我就先讲解一下这个概念,究竟什么时函数的嵌套调用和链式访问?

3.1 嵌套调用

嵌套调用就是函数间的相互调用。说白了,就是你中有我,我中有你。 也可以这么理解,把每个函数想象成一个个乐高零件,正是因为有这么多乐高零件的相互配合、相互成全,才成就出一个巨大且精美的乐高玩具,这也就是函数嵌套调用的精髓所在。

下面我给一道题目,我们在题目中理解概念:

题目:假如我们计算某年某月有多少天?

拿到这个题目时,我们就会想,平年和闰年在2月份有区别。每个月份的天数也有区别。 根据这个思路,我们就可以设计这两个函数: 一个是用于判断年份是否位闰年,is_leap_year() 另一个是用于说明对应月份的对应天数,get_days_of_month()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int is_leap_year(int y)
{
 	if(((y%4==0)&&(y%100!=0))||(y%400==0))
		 return 1;
 	else
		 return 0;
}

int get_days_of_month(int y, int m)
{
	int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 	int day = days[m];
 	if (is_leap_year(y) && m == 2)
 		day += 1;
 
 return day;
}

int main()
{
 	int y = 0;
 	int m = 0;
 	scanf("%d %d", &y, &m);
 	int d = get_days_of_month(y, m);
 	printf("%d\n", d);
 	return 0;
}

分析:这⼀段代码,完成了⼀个独⽴的功能。代码中反应了不少的函数调⽤:

  • main 函数调⽤ scanfprintfget_days_of_month
  • get_days_of_month 函数调⽤ is_leap_year

未来的稍微⼤⼀些代码都是函数之间的嵌套调⽤,但是函数是不能嵌套定义的

3.2 链式访问

所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数的链式访问。

这个其实也很好理解,比如:你现在接收到一个任务,你需要把一个待卡扣绳子的一端,扣在另一根绳子上。这个"卡扣"就是一个函数的返回值,"被扣的那个绳子"就是另一个函数。它们相互配合,共同完成了一个任务。

下面写一个链式访问(说不定,你在不经意间就已经用过了)的情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#include<string.h>
int main()
{
	printf("%d\n", strlen("I love learning C!")); //链式访问
	return 0;
}

下面我给大家一段有趣的代码,大家下来可以自己思考一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
int main()
{
 	printf("%d", printf("%d", printf("%d", 43)));
 	return 0;
}

想要知道这个结果,接得先了解printf函数的返回值。这时候,你也许会惊讶,真的假的,我用了这么久的的printf函数,竟然都不知道printf函数还有返回值。

其实是有的,不信的话,可以去官网找一下这个函数的文档。为了方便研究,我就帮大家找好了。

printf函数
printf函数
printf函数
printf函数

看到这里,你就清楚了,printf函数返回的是被成功打印屏幕上的字符的个数。

上⾯的例⼦中,我们就第⼀个printf打印的是第⼆个printf的返回值,第⼆个printf打印的是第三个printf的返回值。

第三个printf打印43,在屏幕上打印2个字符,再返回2 第⼆个printf打印2,在屏幕上打印1个字符,再放回1 第⼀个printf打印1 所以屏幕上最终打印:4321

最后的最后,如果觉得文章写的还不错的话,请多多点赞。你们的认可是我前进和分享知识的动力之一。🙏🙏🙏

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Camtasia2023最新版本免费汉化更新教程
coco玛奇朵这里给大家分享的是Camtasia Studio2023软件,Camtasia Studio一是款专业录制电脑屏幕的软件。我最近在百度上搜索寻找安装Camtasia Studio最新版本,需要付费,不然只能试用,很懊恼!!!于是,我找遍了各大网站终于找到出路了,找到一版本可以免费Camtasia Studio可以汉化后使用,不影响所有功能。这个我可是耗费了一周的时间哟!本来都想放弃了。现在给需要用的朋友们分享一下!
用户7442547
2022/12/04
2.7K0
Camtasia2023电脑屏幕录制与视频剪辑软件
Camtasia软件2023最新版是一款电脑屏幕录制与视频剪辑的软件,功能强大且操作简单。可以使用该软件对视频进行添加滚动字幕的效果,并且还可以选择注释标注的样式、主题以及形状等。在内置的视频编辑器中对视频进行剪辑时还可以拖放文本、添加效果、添加过渡等操作。剪辑结束后可以一键导出视频,支持的多种格式和视频分辨率的选择(如图1所示)。
用户7442547
2022/11/23
2.3K0
专业游戏录屏 Camtasia 2023强悍来袭,Camtasia 2023软件安装激活教程
CamtasiaStudio2023是一款非常不错的游戏录屏软件。总的来说CamtasiaStudio的功能从专业度来说,分别有:录制桌面,录制视频教程,录制音频;剪截视频,拼接合成视频,制作小视频Camtasia Studio是TechSmith的屏幕动作专用工具,可以在任何颜色模式下轻松记录屏幕动作,包括图像、声音、鼠标移动轨迹和旁白。 它还提供实时播放和编辑压缩功能,用于剪切视频剪辑和添加过渡效果。 它以许多常见格式输出,包括MP4、AVI、WMV、M4V、CAMV、MOV、RM和GIF动画,是创建视频演示的良好工具。
用户9208731
2023/05/04
3.4K0
专业游戏录屏 Camtasia 2023强悍来袭,Camtasia 2023软件安装激活教程
Camtasia2023笔记本屏幕录制录像捕获软件使用教程
在Mac或Windows上有各种可用的视频记录和编辑软件,其中Camtasia被称为视频记录器和视频编辑器。录屏软件Camtasia2023到底有什么特色功能?本文将帮助您选择理想的选择来开始视频捕获,创建和编辑。Camtasia2023是Mac/win平台上一款使用非常简单的屏幕录制和编辑软件。Camtasia2023版不仅能够为用户进行桌面屏幕的录制,在录制完成后还可以进行视频后期剪辑,添加字幕,视频效果和文字,总而言之,Camtasia是一款非常优秀的屏幕录像软件。
用户7442547
2023/02/11
1.4K0
最新版本Camtasia2023电脑屏幕录像编辑软件下载
Camtasia 2023是TechSmith出品的一款屏幕录像和编辑的软件,可轻松录制和分享高质量的截屏视频,提供所需的工具和功能。功能强大的视频编辑器,通过记录您的屏幕活动和网络摄像头流,帮助您创建具有专业外观的截屏视频。软件提供了强大的屏幕录像、视频的剪辑和编辑、视频菜单制作、视频剧场和视频播放功能等,它能在任何颜色模式下轻松地记录屏幕动作,包括影像、音效、鼠标移动的轨迹,解说声音等等,另外,它还具有及时播放和编辑压缩的功能,可对视频片段进行剪接、添加转场效果。
用户7442547
2023/02/02
8180
Camtasia2023软件下载及最新版功能介绍
作为一个自媒体人,每天都要录制编辑视频,选择一个好的视频编辑工具就是大家首先面临的一个难题,选择一个好工具,可以起到事半功倍的效果,大大提高工作效率。
用户7442547
2022/12/03
7700
Camtasia Studio2022专业版屏幕录像编辑软件套装
Camtasia Studio 是一款专门录制屏幕动作的工具,它能在任何颜色模式下轻松地记录 屏幕动作,包括影像、音效、鼠标移动轨迹、解说声音等等,另外,它还具有即时播放和编 辑压缩的功能,可对视频片段进行剪接、添加转场效果。
用户7442547
2022/06/14
1.9K0
Camtasia Studio2023专业版电脑屏幕录像软件
Camtasia Studio2023是专业的屏幕录像和视频编辑软件。可以在任何颜色模式下轻松记录屏幕动作,包括图像、音效、鼠标移动轨迹、解释声音等。此外,它还具有即时播放和编辑压缩功能,可以剪接视频短片,增加过渡效果。它输出了许多文档格式,包括Flash(SWF/FLV),AVI,WMV,M4V,CAMV,MOV,RM,GIF动画等常见格式是制作视频演示的绝佳工具。该软件集成了视频录制、编辑、导出等一系列功能,支持鼠标光标样式、草绘示意插图、冰冻区域等实用的功能,还具有移动客户端让你录制视频,然后通过无线传输到Camtasia中进行编辑,如果你正在找一款电脑上的屏幕录像软件,那么Camtasia绝对是第一选择!
用户7442547
2022/11/05
9470
Camtasia Studio 2023最新录屏软件详细功能介绍
Camtasia Studio 2023是一款专门录制屏幕动作的工具,它能在任何颜色模式下轻松地记录 屏幕动作,包括影像、音效、鼠标移动轨迹、解说声音等等,另外,它还具有即时播放和编 辑压缩的功能,可对视频片段进行剪接、添加转场效果。 让您用更短的时间创作更多的视频。Camtasia 2023版本带来了焕然一新的软件主界面、更加简化的视频导出流程,让我们的创作更加高效,新增加的混合模式、动画光标等功能也能让我们创作的视频拥有全新的视觉体验
用户9208731
2023/04/26
1.2K0
Camtasia Studio 2023最新录屏软件详细功能介绍
Camtasia2023简体中文试用版喀秋莎录屏工具
教学、演示、培训视频轻松制作!Camtasia非常容易学习 你不需要一个大的预算或花哨的视频编辑技能。只需录制屏幕并添加一些特效即可。无论您是有经验还是这是第一次制作视频 Camtasia都会为您提供制作高质量视频所需的一切。创建观看者实际观看的内容。视频将为您提供更多的互动 并帮助受众学习更多内容 比仅通过文本更加生动。
用户7442547
2022/11/21
1.1K0
Camtasia 2023新功能添加了新的视觉效果、滤镜和其他重大改进
总部位于密歇根州的 TechSmith 推出了Camtasia 2023,这是其适用于 Mac 和 Windows 的专业屏幕录制和视频编辑工具的重要新版本。
用户9208731
2023/05/06
6640
Camtasia 2023新功能添加了新的视觉效果、滤镜和其他重大改进
Camtasia Studio2023最新电脑版录屏软件下载
如果你需要制作视频教程、游戏直播或其他视频内容,那么一个好的录屏软件就是必不可少的。Camtasia Studio是非常好用的录屏软件,它们可以记录计算机屏幕上发生的所有活动,并可捕捉声音。这些软件还提供了一些视频编辑功能,如裁剪、剪辑、加工、添加字幕等等,帮助用户制作出更加专业的视频内容。Camtasia 2023是专门用于屏幕录制和视频编辑的软件,一方面可以通过它来录制屏幕、摄像头等,另一方面可以实时进行视频编辑,对录制的视频进行音效、转场、字幕等方面的操作。而且它的功能设置很全面,操作比较简单,小白上手也很快。
用户7442547
2023/03/27
3630
Camtasia2023新版功能介绍及离线安装教程
TechSmith Camtasia Studio2023免费的屏幕录像视频编辑软件,最专业的电脑屏幕录制及编辑软件!这款专业录屏与视频创作大型软件包含屏幕录像、视频编辑、视频菜单制作、视频录音配音、视频发布等系列强大功能。
用户7442547
2022/12/11
9410
Camtasia Studio2023最新版本详细官方功能介绍
Camtasia专业的 屏幕录制和视频剪辑软件3000多万专业人士在全球范围内使用Camtasia展示产品,教授课程,培训他人,以更快的速度和更吸引人的方式进行沟通和屏幕分享。使您在Windows和Mac上进行录屏和剪辑创作专业外观的视频变得更为简单。
用户7442547
2023/04/26
1.1K0
Camtasia2022新增10项功能介绍
Camtasia2022终于带着它的10项新功能来了!从Camtasia2018的初露锋芒,到Camtasia2019、2020的不断进步,再到Camtasia2021的惊艳众人,Camtasia凭借愈发强大的功能收获了一大批忠实用户和如潮好评,已成为屏幕录制必备软件,高效的帮助无数用户轻松录制网络课程、游戏视频,完成了视频创作的梦想!
用户7442547
2022/06/13
6210
最新Camtasia 2022免费版电脑录屏工具
Camtasia 2022是一款集屏幕录制与视频编辑为一体的工具。创建具有专业外观的软件演示、产品教程、在线课程和录制的演示文稿的首选视频解决方案 - 无需视频体验。预建的视频模板可帮助您轻松创建所需的视频。录制屏幕、导入 PowerPoint 演示文稿或添加已有的视频片段。
用户7442547
2022/06/09
1.7K0
Camtasia Studio2023全新版本新功能介绍
CamtasiaStudio2023是一款非常不错的软件。总的来说CamtasiaStudio的功能从专业度来说,分别有:录制桌面,录制视频教程,录制音频;剪截视频,拼接合成视频,制作小视频Camtasia Studio是TechSmith的屏幕动作专用工具,可以在任何颜色模式下轻松记录屏幕动作,包括图像、声音、鼠标移动轨迹和旁白。 它还提供实时播放和编辑压缩功能,用于剪切视频剪辑和添加过渡效果。 它以许多常见格式输出,包括MP4、AVI、WMV、M4V、CAMV、MOV、RM和GIF动画,是创建视频演示的良好工具。
用户7442547
2022/11/24
1.1K0
TechSmith Camtasia2022电脑屏幕录屏软件使用教程
TechSmith Camtasia是一款功能十分专业并且实用的屏幕录像工具。这款软件提供了强大的屏幕录像、视频剪辑编辑、视频菜单制作、视频剧场和视频播放功能等一系列视频编辑功能,让你可以非常轻松的进行屏幕内容录制,然后在对其进行编辑。除了能录制之外,还提供视频编辑处理功能,可对你所录制的视频片段进行剪接、缩放、音频处理、画中画、添加转场特效等操作,你也可以加入各种特效或者添加标题、注释,让你的视频更显专业性,制作出专属于自己的作品,而且它支持的文件格式也是非常多,有常用的AVI及GIF格式,还有RM、WMV及MOV等格式。并可将电影文件打包成 EXE文件,在没有播放器的机器上也可以进行播放,同时还附带一个功能强大的屏幕动画抓取工具,内置一个简单的媒体播放器。
用户7442547
2022/09/25
1.7K0
Camtasia中文最新2023电脑屏幕录制编辑工具
作为一个自媒体人,每天都要录制编辑视频,选择一个好的视频编辑工具就是大家首先面临的一个难题,选择一个好工具,可以起到事半功倍的效果,大大提高工作效率。视频编辑非常多,今天给大家推荐的是一款功能强大、又容易上手的软件,它就是Camtasia 2023。
用户7442547
2023/04/20
1.1K0
Camtasia2022mac全新版电脑录屏软件
又到了Camtasia推出新品的时候,每次更新它都能给我们带来意料之外的惊喜,这款软件既是我们的老朋友,又是每次都有新改变的新朋友。
用户7442547
2022/06/26
7250
推荐阅读
相关推荐
Camtasia2023最新版本免费汉化更新教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验