-
为什么要自己定义函数?
* 随着程序的变大都避免不了下面的问题。
* main函数变得相当冗杂,程序可读性差。
* 程序的复杂性不断升高,编程就编程头脑风暴了。
* 代码前后关联性高,修改代码往往牵一发而动全身
* 为了在程序中多次使用某个功能,不得不重复多次写相同的代码。
* 。。。。。。 -
标准库函数
C语言标准库中为我们提供了很多实现各种功能的函数,有处理字符串的,有数学计算的,有输入输出的,有进程管理的,有信号、接口处理的…
有了这些函数,我们就不用去关注内部的实现细节,只要将注意力在实现的逻辑上面。 -
函数的定义
C语言要求函数必须“先定义,再调用”,定义函数的格式如下:
类型名 函数名(参数列表)
{
函数体
}
- 类型名就是函数的返回值,如果这个函数不返回任何值,那么需要写上void(无类型,表示没有返回值。)
- 函数名就是函数的名字,一般来说我们根据函数实现的功能来命名。比如print_C打印C,一目了然。
- 参数列表指定了参数的类型和名字,如果没有参数写上()就行,不过推荐写成(void)这样可以校验。
- 函数体就是指定函数的具体实现过程,函数最重要的部分。
- 函数的声明
所谓的声明(Declaration),就是告诉编译器我要使用这个函数,你现在没有找到定义不要紧,请不要报错,稍后我会把定义补上。
有时候你可能发现即使不写函数声明也不会报错,但是如果把定义写在调用的后面,编译器就找不着北了。
#include <stdio.h>
int main(void)
{
print_C();
return 0;
}
void print_C(void)
{
printf(" ###### \n");
printf("## ##\n");
printf("## \n");
printf("## \n");
printf("## \n");
printf("## ##\n");
printf(" ###### \n");
}
声明函数很简单,去掉函数体,换成分号就行。
void print_C(void);
为了养成良好的编程习惯,必须先声明,再定义,再调用。
- 函数的参数和返回值
有时候函数需要接收用户传入的数据,那么就需要使用函数的参数。根据需求函数的参数可以有多个,类型也可以各不相同。而函数的返回值通常反馈了函数的计算结果,也可以是函数的执行结果,比如执行成功或者失败。