C++自定义函数,c语言自定义函数用法
c源程序是由函数组成的。虽然C语言入门系列之前的程序只有一个主函数main(),但实用程序往往是由多个函数组成的。函数是C源程序的基本模块,通过调用函数模块实现特定的功能。C语言中的函数相当于其他高级语言中的子程序。c语言不仅提供了丰富的库函数,还允许用户构建自己定义的函数。用户可以将自己的算法编译成相对独立的功能模块,然后通过调用来使用功能。可以说C程序的所有工作都是由各种函数来完成的,所以C语言也叫函数式语言。
由于功能模块结构,C语言很容易实现结构化编程。使程序的层次结构清晰,便于编程、阅读和调试。
在C语言中,函数可以从不同的角度进行分类。
1.从函数定义的角度来看,函数可以分为库函数和自定义函数。
库:由C系统提供,用户不需要定义它,也不需要在程序中做类型描述,只需要包含这个函数原型的头文件就可以在程序中直接调用。上篇提到的数学函数就属于这一类。
用户自定义函数:用户根据需要编写的函数。对于自定义函数,不仅需要在程序中定义函数本身,还需要在主功能模块中指定被调用函数的类型才能使用。
2.语言中的函数既有其他语言中的函数又有过程。从这个角度来看,函数可以分为两种:有返回值的函数和没有返回值的函数。
有返回值的函数:这类函数在被调用执行后,会向调用方返回一个执行结果,称为函数返回值。如数学函数,就属于这类函数。返回函数值的用户定义函数必须在函数定义和函数说明中指定返回值的类型。
无返回值函数:这类函数用于完成一个特定的处理任务,执行完成后不向调用者返回函数值。这种功能类似于其他语言的过程。因为函数不需要返回值,所以用户在定义这样的函数时可以将其返回指定为“空类型”,空类型的说明符为“void”。
3.从调用函数和调优函数之间的数据传递来看,可以分为非参数函数和参数函数两种。
无参数函数:函数定义、函数描述和函数调用中都没有参数。主调函数和被调函数之间没有参数传递。这种函数通常用来完成一组指定的函数,可以返回也可以不返回。
参数函数:也叫参数函数。函数定义和函数描述中都有参数,称为形式参数(简称形式参数)。调用函数时,也必须给定参数,这种参数称为实际参数(简称实参)。当调用一个函数时,调用函数会将实参的值传递给形参,供被调用函数使用。
4)、C语言提供了非常丰富的库函数,从函数的角度可以分类如下。
类型分类功能:用于根据ASCII码对字符进行分类:字母、数字、控制字符、分隔符、大小写字母等。
转换函数:用于转换字符或字符串;在字符和各种数字量(整数、实数等)之间转换。);在大写和小写之间转换。
路径功能:用于文件目录和路径操作。
诊断功能:用于内部错误检测。
图形功能:用于屏幕管理和各种图形功能。
输入功能:用于完成输入输出功能。
功能:用于连接操作系统、BIOS和硬件。
字符串函数:用于字符串操作和处理。
内存管理功能:用于内存管理。
数学函数:用于数学函数计算。
和日期时间函数:用于日期和时间转换。
过程控制功能:用于过程管理和控制。
其他功能:用于其他功能。
以上功能不仅数量众多,而且有些还需要硬件知识才能使用,要全部掌握需要一个漫长的学习过程。首先要掌握一些最基本最常用的功能,然后逐步深化。更多函数请根据需要参考C语言函数手册。
还需要指出的是,在C语言中,所有的函数定义,包括主函数main,都是并行的。也就是说,在一个函数体中,不能定义另一个函数,也就是不能嵌套。但是函数是允许互相调用的,嵌套调用也是允许的。习惯上称调用者为主音函数。函数也可以调用自己,这叫递归调用。
主函数就是主函数,不被其他函数调用也能调用其他函数。所以C程序的执行总是从主函数开始,调用其他函数后返回主函数,最后主函数结束整个程序。一个C源程序必须只有一个主函数,main。
函数分为参数函数和非参数函数。
无参数函数的定义
无参数函数定义的一般形式如下:
类型标识符函数名(){声明分部语句}
其中类型标识符和函数名是函数头。类型标识符表示这个函数的类型,实际上就是函数返回值的类型。类型标识符与前面介绍的各种说明符相同。函数名是用户定义的标识符,函数名后面有一个空括号,里面没有参数,但是括号是必不可少的。
{}中的内容称为函数体。函数体中的声明部分是对函数体中使用的变量类型的描述。
在许多情况下,不要求参数函数有返回值。在这种情况下,函数类型符号可以写成void。
我们可以重写一个函数定义:
void Hello(){ printf(Hello,world \ n );}
这里只把main改成Hello作为函数名,其余不变。Hello函数是一个无参数函数,当被其他函数调用时,它输出一个Hello world字符串。
参数函数定义的一般形式
参数函数定义的一般形式如下:
类型标识符函数名(形参列表列){声明分部语句}
带参数的函数比不带参数的函数多了一个内容,就是形参表列。形参表中给定的参数称为形参。它们可以是各种类型的变量,参数之间用逗号分隔。当进行函数调用时,调用函数会给这些形式参数实际值。由于参数是变量,因此必须在参数表中给出参数的类型描述。
例如,定义一个函数来查找两个数中的较大数,可以写成:
int max(int a,int b){ if(a b)return a;否则返回b;}
第一行显示max函数是一个整数函数,它返回的函数值是一个整数。参数是A和B,都是整数量。a和b的具体值由调用函数传递。{}中的函数体,除了形参没有其他变量,所以只有语句,没有声明部分。max函数体中的return语句将a(或b)的值作为函数值返回给tone函数。具有返回值的函数中至少应该有一个return语句。
在C程序中,函数的定义可以放在任何地方,可以放在main函数main之前,也可以放在main函数之后。例如,max函数可以放在main之后或main之前。修改后的程序如下。
#include stdio.h int max(int a,int b){ if(a b)return a;否则返回b;}int main(){ int x,y,z;Printf(请输入两个数字:\ n );scanf(%d,%d ,x,z=max(x,y);Printf(两个数中较大的是:%d\n ,z);系统(“暂停”);返回0;}运行结果:
现在,我们可以从函数定义、函数描述和函数调用的角度来分析整个程序,从中可以进一步了解函数的各种特性。
程序的第2行到第6行定义了max函数。程序的第12个动作调用max函数,将x和y中的值传递给max的参数a和b。max函数执行的结果(A或B)会返回给变量z,最后主函数输出z的值。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。