大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为
创新互联建站主营保靖网站建设的网络公司,主营网站建设方案,重庆APP软件开发,保靖h5小程序制作搭建,保靖网站营销推广欢迎保靖等地区企业咨询
C语言编译时要检查语法,所以A不对;
C语言没有过程,只有函数,所以B不对;
C语言函数内不能定义函数,既不能嵌套定义,所以C不对。
排除法也知道是D了。当然由“函数内不能定义函数”也可以推出所有函数都是外部函数。
—— 其实这种说法对外部函数的理解也还值得商榷。但其它的是完全不对,也就选它吧。
默认都为外部 ,就是可以被别的文件调用,前面static 修饰的话,则只能在本文件域中被调用。。
有两种理解.(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
int。C语言规定:在定义函数时,若其返回值类型为int,则可以默认。
C语言函数有三类,分为外部函数、静态函数、内联函数,其中前两种是C89标准支持,第三种是C99标准增加的。
1、外部函数
这类函数是默认的函数类型,基本上平时我们使用的就是这种函数,声明有以下两种方式,例如:
// 使用extern关键字,显示声明
extern int add(int a, int b);
// 或省略关键字extern,编译器也会自动认为是extern
int add(int a, int b);
外部函数表明在当前声明和定义的代码文件中可以使用,也可以在其它代码文件中可以通过#include指令包含使用,对外部的代码可见。
2、静态函数
这类函数其实与外部函数相对的,因为需要使用static关键字修饰,因此称为静态函数,其实就是内部函数。声明方式如下,例如:
static int add(int a, int b);
静态函数的作用域只能在当前声明和定义的文件中,在其它代码文件中无法#include使用,因此在整个程序中,特别是大型程序,有多个源代码文件时,即使定义相同名称的两个静态函数,也不会有命名和使用冲突。
3、内联函数
是新增的特性,使用inline关键字声明和定义,该类函数类似#define宏定义展开,编译时会直接将函数定义代码在调用的地方复制展开,这样会减少函数调用的开销,提高运行效率。
inline int add(int a, int b);
内联函数适合短小的、被频繁调用的函数,对于复杂函数,无法使用。
扩展资料:
C语言编写注意事项:
1、const在声明变量中起限制作用, 该限定变量的值不能被修改。
2、%运算符不能应用与float或double类型。
3、char类型转换为int型时, 无法判断它是signed还是unsigned.这样其结果有可能为负数, 因此转换时尽量指定signed和unsigned限制符。
4、++i与i++不同之处: ++i是先+1在使用, i++是先使用i在递加1。
5、三元运算符"?:" 第一个表达式的括号不是必须的,但是由于三元表达式的优先级非常低,我们还是将第一个表达式用()括起便于阅读和理解。
6、C语言中可以使用递归 (即函数调用自身函数), 其不节省储存器开销也不加快执行速度, 只是使程序紧凑便于理解。
两个可以放在同一目录下,也可以放到不同的目录下,前提是你在主函数文件中应当包含相应的头文件或C文件(路径写对应,写完整就好)。
外部函数文件根据所写函数需要将对应头文件包含进来,stdio.h作为一个标准输入输出文件,只要你该外部文件内涉及到输入输出等操作,就是必须要包含进来的。
希望对你有所帮助!