有两种理解.(1)库函数是C语言的内部函数或自带函数,外部函数即程序员自定函数.
创新互联公司专注于源汇企业网站建设,成都响应式网站建设公司,商城建设。源汇网站建设公司,为源汇等地区提供建站服务。全流程按需网站制作,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
(2)凡加写了extern 的函数是外部函数.
第一种理解好懂:
C语言的内部函数指的是C语言自带的函数,无论是动态链接的或静态链接的. 这些函数通过C语言的头文件定义了.
例如, sin(),cos()等数学函数,在math.h中定义了,输入输出函数 printf(),fgetc()在stdio.h中定义了,时间函数表time(),ctime()等在time.h中定义了.还有许多其他内部函数.编程时,只要用#include 库名.h写在编程头部,程序中就可调用.
自定义函数,就是用户自己写的函数.
第二种凡加写了extern 的函数是外部函数:
自定义函数可以与程序的main()写在同一个文件中,也可以写在另一个文件中,这时你可能还另写自己的头文件或者写extern....,告诉编译器,main中用到的某某函数是"外部函数".
例如,main()在a.c中,自定义函数my_func()在a2.c中
a.c内容:
#include stdio.h
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 内容:
float my_func(float a)
{
return a;
}
编译:
cl -c a.c [得到a.obj]
cl -c a2.c [得到a2.obj]
cl a.obj a2.obj [链接成a.exe]
运行:
a.exe
得
result=2.000000
extern float my_func() 是外部说明,告诉编译,main()里的my_func是外部函数,要通过链接(.obj)得到.
如果把my_func写在a.c里:
#include stdio.h
float my_func(float a){
retun a;
}
main()
{
printf("result=%f\n",my_func(2.0));
}
my_func() 就不是外部函数.
编译:
cl a.c [得a.exe]
运行:
a.exe
得
result=2.000000
C还没有影子的时候,高级语言BASIC就有GOSUB调用子程序语句,这实际上就是调用一个比较完整的功能模块,而C语言的函数一词正是从function(功能,函数)翻译过来的;高级语言还连影子都没有的时候,汇编语言就有一系列跳转和返回指令,就已经具备了跳出主程序流程完成某种功能后返回主流程继续执行的操作。所以在下认为函数调用操作并不是C的发明创造,在C的研发一开始,这种思想已经很成熟了(在CPU的研发指令安排中已经具备了这种思想),只是C把程序结构完全函数化了。再说,C的初衷是替代汇编语言的,汇编语言已经具备了这种思想,C没有这种功能就很难达到初衷了。后来互相影响,一些高级语言也都模块化升级,像BASIC的子程序调用已经与C的不差上下了。个人管见,只供参考。
C语言中一个函数(function)是一个可以从程序其它地方调用执行的语句块。
1、通过使用函数(functions)我们可以把我们的程序以更模块化的形式组织起来,从而利用C语言所支持的结构化程序设计。
2、从数学角度,函数即集合A和集合B之间的映射关系。实际上计算机中的函数概念也是源于此,因此,一般函数,都有形参和返回值。
3、从计算机组成原理的角度来看,函数即是一个小型的计算机系统,依据冯诺伊曼的“存储程序原理”,每一个计算机系统包含:输入系统、输出系统、运算器以及控制器,实际上对于C语言中的函数来说,它是“存储程序原理”的软实现,其中形参、实参这是输入系统,返回值是输出系统,函数体中的运算符,比如+、-、*、/四则运算即为运算器,而逻辑运算符以及if、while等控制语句便是一个控制器。