C语言的内部函数与外部函数
原创
©著作权归作者所有:来自51CTO博客作者WangLanguager的原创作品,请联系作者获取转载授权,否则将追究法律责任
内部函数与外部函数
- 在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数,形式为:
static [数据类型] 函数名([参数]) - 这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。
- 在C语言中能被其他源文件调用的函数称谓外部函数 ,外部函数由extern关键字来定义,形式为:
extern [数据类型] 函数名([参数]) - C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。
静态变量只赋值一次
外部函数练习
hello.c
#include
#include "test.c" //引用test.c文件
extern void printLine() //这里定义的方法对吗?
{
printf("**************
");
}
int main()
{
say();
return 0;
}
test.c
#include
void printLine();
static void say(){
printLine();
printf("I love imooc
");
printf("good good study!
");
printf("day day up!
");
printLine();
}
对于hello.c来说,直接引入了test.c文件。那么就可以调用testc中的static方法say()
而对于test.c并没有引入,可以通过声明来调用另一个源文件中暴露出来的方法。
综合练习
北京市出租车打车计费规则如下:
- 每公里单价计费2.3元
- 起步价13元(包含3公里)
- 晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。
- 每次乘车加收1元钱的燃油附加税。 小明每天上下班都要打车,公司和家的距离为12公里,上午上班时间为9点,下午下班时间为6点。 请编写一个小程序计算小明每天打车的总费用。
#include
float taxifee(int clock,int miles)
{
float money;
if(miles<=3)
{
money=14;
printf("费用为14
");
}
else
{
if(clock>=23 || clock<5)
{
money=13+1+2.3*(miles-3)*1.2;
printf("夜间车费为:%f
",money);
}
else
{
money=13+1+2.3*(miles-3);
printf("日间车费为:%f
",money);
}
}
return money;
}
int main()
{
printf("打的总费用:%.1f
",taxifee(9,12)+taxifee(18,12));
return 0;
}