C语言程序中,func()指的是Function,表示子例程的一般性名词。在某些编程语言中,它指带返回值的子例程或语句。在一些编程语言中起着关键字的作用。
将常用的代码以固定的格式封装(包装)成一个独立的模块,只要知道这个模块的名字就可以重复使用它,这个模块就叫做函数(Function)。函数的本质是一段可以重复使用的代码,这段代码被提前编写好了,放到了指定的文件中,使用时直接调取即可。
Function 除了有“函数”的意思,还有“功能”的意思,中国人将 Function 译为“函数”而不是“功能”,是因为C语言中的函数和数学中的函数在使用形式上有些类似,例如:C语言中有 length = strlen(str),数学中有 y = f(x)。
扩展资料:
C语言中函数定义时给出的参数为形式参数,简称形参;函数调用时给出的参数(也就是传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值 *** 作。
原则上讲,实参的类型和数目要与形参保持一致。如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型,例如将 int 类型的实参传递给 float 类型的形参就会发生自动类型转换。
C语言不允许函数嵌套定义,不能在一个函数中定义另外一个函数,必须在所有函数之外定义另外一个函数。main() 也是一个函数定义,也不能在 main() 函数内部定义新函数。有些编程语言是允许函数嵌套定义的,例如 JavaScript,在 JavaScript 中经常会使用函数的嵌套定义。
——Function
——C语言
在C语言中指针函数和函数指针是两个不同的概念,不能混淆。
指针函数本质上是函数,是一个返回类型为指针的函数,如:
int max(int array,int n)
{
//找最大值的地址
return 最大值的地址;
}
max就是一个指针函数。
而函数指针本质上是指针,是指向函数的指针,如:
int (funp)(int a,int b);
funp就是一个函数指针,可以用它指向一个返回类型为int、有两个int类型的参数的函数。
C源程序是由函数组成的。
C程序是由一组或是变量或是函数的外部对象组的。 函数是一个自我包含的完成一定相关功能的执行代码段。
从函数定义的角度看,函数可分为库函数和用户定义函数两种。
1)库函数
由C系统提供,用户无须定义, 也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。在前面各章的例题中反复用到printf 、 scanf 、 getchar 、putchar、gets、puts、strcat等函数均属此类。
(2)用户定义函数
由用户按需要写的函数。对于用户自定义函数, 不仅要在程序中定义函数本身, 而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。
2 C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。
(1)有返回值函数
此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。如数学函数即属于此类函数。 由用户定义的这种要返回函数值的函数,必须在函数定义和函数说明中明确返回值的类型。
(2)无返回值函数
此类函数用于完成某项特定的处理任务, 执行完成后不向调用者返回函数值。这类函数类似于其它语言的过程。 由于函数无须返回值,用户在定义此类函数时可指定它的返回为“空类型”, 空类型的说明符为“void”。
3 从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。
(1)无参函数
函数定义、函数说明及函数调用中均不带参数。 主调函数和被调函数之间不进行参数传送。 此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。
(2)有参函数
也称为带参函数。在函数定义及函数说明时都有参数, 称为形式参数(简称为形参)。在函数调用时也必须给出参数, 称为实际参数(简称为实参)。 进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。
4 C语言提供了极为丰富的库函数, 这些库函数又可从功能角度作以下分类。
(1)字符类型分类函数
用于对字符按ASCII码分类:字母,数字,控制字符,分隔符,大小写字母等。
(2)转换函数
用于字符或字符串的转换;在字符量和各类数字量 (整型, 实型等)之间进行转换;在大、小写之间进行转换。
(3)目录路径函数
用于文件目录和路径 *** 作。
(4)诊断函数
用于内部错误检测。
(5)图形函数
用于屏幕管理和各种图形功能。
(6)输入输出函数
用于完成输入输出功能。
(7)接口函数
用于与DOS,BIOS和硬件的接口。
(8)字符串函数
用于字符串 *** 作和处理。
(9)内存管理函数
用于内存管理。
(10)数学函数
用于数学函数计算。
(11)日期和时间函数
用于日期,时间转换 *** 作。
(12)进程控制函数
用于进程管理和控制。
(13)其它函数
用于其它各种功能。
函数可以避免重复的书写。比如一个运算要在不同的地方多次进行,就不必把这么多行都写一遍,调用一个函数就行了。同时减少不必要的变量。从而使程序大大简化。
库函数就比较高深了,它的好处我现在还没有切实体会到。
在主函数里的是实参,在子函数里的是形参。因为在真正执行的时候是把实参传递给形参来执行的,所以实参才是实际的参数。
比如:
int jjj(int a, int b)
void main()
{
int x, int y;
jjj(x, y);
}
a、b是形参,x和y是实参。
而调用与被调用是相互的,
int aa(){}
int bb(){;aa();}此时,bb函数调用了aa函数,即aa被bb函数调用。
楼主可以这样想,C语言中,无论是常量,变量,函数,只有先定义才能使用的。在函数定义时,大脑要往一般的常量,变量定义的方向,切忌先不要想函数的别的。定义好后,把函数的定义先放一边,不管它。
接着是函数声明,大家都知道,C语言是有一个主函数main()和0或n个普通函数组成的。由于当代码越长,用到的函数就越多,为了减少函数的混淆,所以要有个函数名,就像老师点名一样,声明一个函数,就如点一个学生的名字。
总之,函数定义是系统要求的,不定义就错误,而函数声明实际上不定义也行,但为了方便和减少错误,人为规定要声明。
内部函数跟外部函数的区别在于:一个文件中定义的函数能否被其它文件调用。能被调用的函数在前面加extern(一般省略),而不能被调用的加static(不能省略),通常函数本质上是全局的,也就是外部的可调用的。
我们通常调用的#include本质上就是一些外部函数的集合,由于在一个文件中的函数要调用另外一个文件的函数,要求在开始声明一下,为了省略这些声明,我们引用include命令。
C语言中结构体和函数有着本质上的不同。
结构体是用户自己定义的一中数据类型,比如说你想要把学生信息作为一个整体存放在一个数据类型中,可以定义结构体,其中某个成员存放学号,某个存放姓名等等。
但是函数就完全不同了,函数是为了实现某种功能,比如你要在一堆学生中寻找某一个学生可以用函数来实现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)