一、函数
- 函数:就是将完成某个特定功能的代码放到一起,形成一个代码块。
- 函数结构与定义:
//函数的定义
返回值类型 函数名(形式参数列表)
{
函数体
return 返回值;
}
//形式参数列表:形式参数类型1 形式参数名1,形式参数类型2 形式参数名2。通常通过参数列表可以得知一个函数调用时需要传递几个参数以及参数类型。
//返回值:返回值类型可以是int、char、float等基本数据类型,*、void也可以,使用void做返回值类型是,表示函数没有返回值。返回值为void是,可以缺省返回值或省略return。
//函数名:不能与关键字重名,一个工程中,各个函数不能重名
-
函数原型或函数声明:除函数的实现,也称函数体外的部分,就是函数声明。调用函数前,必须先声明,给调用者提供参数,返回值,函数名等结构。
返回值类型 函数名 (形式参数列表);
-
函数的调用:让CPU执行函数,运行函数中的代码。
函数名(实际参数列表);
-
函数说明:函数使用的一些技巧或存在的问题,注意事项。
-
典型代表:main()函数,是C语言的主函数。
-
使用函数的好处:
- 使得代码模块化。
- 逻辑结构清晰,更方便调试。
示例:
#include <stdio.h>
int main()
{
int a = 10, b = 20;
int sum;
sum = add(a,b);
printf("%d\n",sum);
return 0;
}
int add(int a,int b)
{
return a+b;
}
练习:写函数实现,求一个数的阶乘。
#include <stdio.h>
int main()
{
int a = 5;
int sum = jiecheng(a);
printf("%d",sum);
return 0;
}
int jiecheng(int num)
{
int sum = 1;
while(num != 1)
{
sum *= num;
num--;
}
return sum;
}
二、函数的形参与实参
(一)全局变量与局部变量:
- 全局变量:在函数外定义的变量称为全局变量,存在于内存全局区,有全局作用域(可以在其他函数或位置使用该变量)。全局变量的生命周期(内存有效的时间段)指从程序开始运行到程序结束都存在。
- 局部变量:在函数中定义的变量称为局部变量,存在于内存栈区,有局部作用域(只能在该函数中使用),局部变量的生命周期,只有该函数调用时存在。
- 函数的形参与实参:是一个相对的概念,调用函数时传入的参数即是实参,被调用的函数的参数列表中的变量称为形参。
- 函数参数的传递方式:
- 复制传递:将实参的值复制一份,再赋值给形参。
- 地址传递:数组,字符串的传参。
- 全局变量:传参不推荐使用。