函数的概念

是一段具有特定功能的代码块,可以在程序中被重复调用

函数的格式

函数的定义

返回值类型 函数名(参数列表)//形参
{
函数体;
}

函数体:函数定义中的代码块,用于实现函数的具体功能。函数体包含在花括号{}中。
返回类型:当函数需要返回一个值时,需要在函数声明中指定返回类型,并在函数体中使用return语句返回相应的值。

函数名:
软硬要求:见名知义硬性规定:
(1)只能由字母、下划线、或数字组成,且数字不能开头;
(2)不能是关键字;建议:使用匈牙利或者下划线方式命名

参数列表:
格式: 数据类型 参数名称说明
(1)数据类型:函数参数必须指定参数的数据类型;
(2)参数名称:符合标识符的特点;
(3)出现多个参数,用逗号分开。

函数的调用

函数名(参数)//实参

注意: 实参与参数列表中的 类型、个数、顺序必须保持一致,否则调用不成功

参数的传递方式:
(1)C语言中参数的传递方式有值传递和地址传递两种。
(2)值传递是将实参的值拷贝给形参,而地址传递是将实参的地址传递给形参

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int getSum(int a ,int b);//函数声明
int main()
{
int sum1 = getSum(1,2);//函数调用
int num1=10;
int num2=20;
int sum2 = getSum(num1,num2);
return 0;
}
int getSum(int a ,int b)//函数定义
{
int sum = a + b;
return sum;
}

递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
int fac(int n)
{
if(n == 0 || n == 1)
{
return 1;
}
return n * fac(n-1);
}

//使用递归函数计算1~n的和
int sum(int n)
{
if(n == 1)
{
return 1;
}
return n + sum(n-1);
}
int main()
{
printf("%d\n",fac(0));
printf("%d\n",fac(5));

printf("%d\n",sum(5));
printf("%d\n",sum(100));
return 0;
}

变量的分类

变量类型 位置 作用域 生命周期
局部变量 函数内(例如:main函数) 函数内使用 当函数执行完毕后,局部变量的内存空间会被释放,它们的值也会被销毁
全局变量 函数外 程序的任何地方被访问和使用 在整个程序的执行过程中都存在,其内存空间也不会被释放,直到程序结束

作用域:限定一段程序代码可用性的范围。
生命周期:一段程序代码创建到销毁的整个过程

结论:
(1)全局变量可以在函数中访问
(2)全局变量在修改之后,其修改值在整个程序都有效;
(3)全局变量名与局部变量名相同,就近原则。