认识函数
-
概述
函数是实现特定功能的代码段,是模块化程序设计的需要,使用函数的目的是提高程序的复用性。
模块化就是将每一个程序分解成若干个模块,就像“组装”计算机一样,在C语言中可以利用函数实现模块化设计
- 程序实现的方法主要有两种:一体化和模块化
一体化是指将一整个功能模块的代码全部写在一个文件或一个类里面,实现一个完整的功能。
这种方法适用于程序逻辑比较简单,功能单一的情况。其优点是代码结构简单,易于维护和修改,缺点是不利于代码复用和扩展性。
模块化是指将一个大的功能模块拆分成多个小模块,每个小模块只负责一个功能,然后将这些小模块组合起来实现整个功能。
这种方法适用于程序逻辑比较复杂,功能较多的情况。其优点是代码结构清晰,易于理解和维护,支持代码复用和扩展性,缺点是代码结构比较复杂,需要一定的开发经验。
两种方法都有自己的适用场景,具体要根据实际情况选择。
- 函数可以从以下两个角度分类
用户角度:函数分为库函数和用户自定义函数
库函数由系统提供,用户可以直接调用
用户自定义函数是用户根据实际需要自行设计函数
函数形式角度:函数分为无参函数和有参函数
函数声明
-
方法
函数定义时首行被称为函数原型,声明只需在函数原型后面加上“;”,如下
void hello();
-
作用
把函数的信息提前通知编译系统,方便编译系统对程序进行编译,检查被调用函数是否存在
-
位置
如果声明在主调函数之前,该函数可以被声明之后出现的所有函数调用
如果声明在主调函数内部,该函数只能被主调函数调用
无参函数
-
定义
返回值类型 函数名()
{
// 函数体代码
}
注意函数和变量一样,必须遵循先定义,后使用的原则
示例:下面是一个简单的无参函数,用于输出“你好”:
#include <stdio.h>
void sayHello() {
printf("你好\n");
}
int main() {
sayHello();
return 0;
}
其中,void是返回值类型,say_hello是函数名,函数体包含了printf语句
-
调用
//调用语法结构
函数名();
示例:调用函数输出“hello,world”:
void say_hello() {
printf("Hello, world!");
}
int main() {
say_hello(); // 调用无参函数
return 0;
}
在上述示例中,函数say_hello用于输出"Hello, world!",在main函数中调用该函数时,只需要使用函数名say_hello后跟一对空括号即可,即say_hello()。当程序执行到这一行时,就会执行say_hello函数中的代码,输出"Hello, world!"。
注意在C语言中每个程序有且只有一个main()函数,main()函数可以调用其他函数,但其他函数不能调用main()函数,所有函数都可以调用库函数
项目——计算今年的天数
无参函数也可以用来计算今年过了多少天,思路如下:
- 定义一个无参函数,用来计算今年过了多少天;