重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在本文开始前·,我们首先要了解什么是函数,这将有助于增进我们对自定义函数的理解。
在玄武等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作定制开发,公司网站建设,企业网站建设,成都品牌网站建设,全网营销推广,成都外贸网站建设公司,玄武网站建设费用合理。概念:
在计算机科学中,子程序(也就是C语言中的函数),是一个大型程序中的某部分代码, 由一个或多个语句块组 成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。
一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软 件库。
在概念中,函数是“封装”好的一段程序,在功能和内容上具有相对独立性,程序员们往往通过他来做一种需要多次重复的过程,这种对函数的需求是普遍存在的,由此,对最常用函数的归纳整理也促成了“库函数”这一概念的产生。
(库函数:一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。)
那为什么要自定义函数?问:“库函数”中囊括了编程所需要的常用函数,那我们为什么还要自定义函数呢?
答:如果库函数能干所有的事情,那还要程序员干什么?
自定义函数作为程序员必备的一项技能,他更多的是对库函数的一种补足,当库函数无法满足我们的需求时,就需要我们自己在定义一个函数来达成目标。
如,当我们需要一个函数来判断两个整形常量的大小,在编译器中,C语言并没有提供相关的库函数,这样我们就要自定义一个函数来实现这一功能。
-------------正文------------
自定义函数 基础篇——— 一、概念通过上方自定义函数意义的分析,我们可以给自定义函数下个定义:
定义函数从字面意思上理解就是自己定义的函数,因为库函数不能满足大家的所有需求,所以有时候需要程序员自己编写属于自己的函数。
二、自定义函数的构成自定义函数和库函数一样,有函数名,返回值类型和函数参数。
ret_type fun_name(para1, * )
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
返回类型:返回类型与返回值类型一 一照应,未标明返回值类型时,默认返回了为”int“。
函数名:自己为函数起的名字,可以由大小写字母、数字和字符组成,不能由数字开头,且函数名不能和关键字相同。
函数参数:分为实参和虚参(下面会讲)。
返回类型 + 函数名(参数类型+参数,同,......)
{
函数体;(执行部分)
}
注:参数上限为1024,但过犹不及,多并不代表好
注:不需要返回值或参数时,可用void代替
(二)创建思路在完成主函数构建后,一般流程可为:
两个元素
明白函数要干什么?用什么干?
①干什么?
即:所定义函数要实现怎样的功能或效果。
②用什么干?
即:要实现我们想要的效果,函数需要什么数据(参数)。
搭建格式
在明白了“两个元素”后我们就可以确定函数的返回类型、参数类型,这时候我们给函数起一个合适的名字就可以搭建起函数的外壳部分。
int max(int x,int y)//返回类型 函数名(类型+参数1,类型+参数2)
{
//函数体
}
完善函数内容
搭建完函数框架还要填充函数的内容,通过代码来赋予他功能。
int max(int x,int y)
{
if (x >y)
return x;
else
return y;
}
测试
高手也会犯错,在程序未运行起来之前,没人能保证程序就一定是对的,所以测试也是必不可少的。
二、形参与实参实际参数(实参): 真实传给函数的参数,叫实参。 实参可以是:常量、变量、表达式、函数等。 无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形 参。
int a = max(1,14);//“1”和“14”为实参
形式参数(形参): 形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内 存单 元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有 效。
即:计算机编译或运行时,使用某个函数来完成相关命令。通俗来讲,函数用了就是调用。
(二)分类传值调用 顾名思义,传值调用是将参数的值传给函数。
传址调用 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
在前文中我们说过“形式参数只有在函数被调用的过程中才实例化(分配内存单元)”
也就是说在调用函数时,传来的参数被存储在新的、为形参分配的内存空间中,可以简单理解为形参是实参的一份临时拷贝。
图片中可以观察到,a和x的地址不同,所处内存空间也不同,只是存储的值相同。
而本质不同,形参变化自然不会改变实参
(二)传址调用 和传值调用了解了实参和形参的本质区别,我们发现,形参的改变其实是无法对主函数内的形参产生影响的。
那么通过什么途径使函数具备改变实参的能力呢?
答案是指针,指针是变量的地址,指针变量是变量,作为变量它当然可以作为参数传给函数。
下面做一个实验,我们将指针作为参数,通过指针来直接找到实参所在的内存单元进行改变,再尝试能否改变实参。
结果显而易见,通过指针(地址),我们成功从本质上改变了实参。
由此可以得出结论:
传值调用这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操 作函数外部的变量。
(三)总结传值调用和传址调用分别有不同的应用场景,要结合实际情况做出选择。
二、习题练习1. 写一个函数可以判断一个数是不是素数。 2. 写一个函数判断一年是不是闰年。 3. 写一个函数,实现一个整形有序数组的二分查找。 4. 写一个函数,每调用一次这个函数,就会将 num 的值增加1。
NB篇———我不会了
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧