目录
前言:
上次课我们学了函数的定义和使用,今天我们来详细学习一下函数的定义的各个细分部分。
函数就像一个有魔法的盒子,我们输入瓶装水的原材料(瓶子和水),通过有魔法的盒子(生产线和生产过程),就能得到瓶装水的成品。
函数的定义制作这个有魔法的盒子的过程,它包含了这样几个部分:函数名,函数参数,函数代码,函数返回值等等。
我们一一来学习它们,首先是函数的命名:
1.函数的命名
1.1
函数的命名规范和变量是一致的,只能使用字母,数字,下划线,且不能用数字开头。
一个好的函数命名,最好能从名字看出函数的功能,
比如AddThree()
,PrintFiveTimes()
同时我们还鼓励使用字母单词首字母大写的形式来跟函数命名,这也是变量命名的风格不一样的地方。
1.2
我们来看看函数的命名部分:
void PrintFiveTimes (int number_a)
函数命表示的函数便是使用printf函数打印"number_a"的值五次。
int AddThree(int number_a)
函数命表示的函数便是在原来的基础上加三。
函数名是标识一个函数的重要部分,我们在调用一个函数的时候,首先需要的就是这个函数的函数名。
1.3
这是函数名的一些注意事项
2.函数参数
2.1
接下来是函数的参数,函数的参数是给函数的输入部分,类似魔法盒的原材料输入部分,水和空瓶子。
我们之前学习的自定义函数只有一个参数,实际上C语言是支持多个函数参数的,多个函数参数需要以英文逗号隔开,同时每个参数也需要带自己的数据类型。
2.2
我们定义一个把两个整型数字相加的函数AddTwoNumber()
:
int AddTwoNumber(int number_a,int number_b)
{
int mumber_c=number_a+number_b;
return number_c;
}
1.函数返回类型 int
2.函数名 AddTwoNumber
3.函数的第一个参数 num_a,类型是整型
4.函数的第二个参数 num_b,类型是整型
5.两个函数参数 int a与b 之间用逗号隔开
6.中括号内为 函数体部分
2.3
C语言函数是可以没有参数的,这类函数在教科书中经常被称为无参数函数,简称无参函数,无参函数就没有数据输入,它只会执行特定的功能,以及输出一些数据或者执行一些功能。
比如打印五行下划线:
void PrintFiveTimes()
{
printf("__\n");
printf("__\n");
printf("__\n");
printf("__\n");
printf("__\n");
}
int main() {
PrintFiveTimes();
return 0;
}
在函数定义中的参数,在教科书中又被称为形式参数,意思是它没有具体的值,是一个“形式”的参数,简称形参。
2.4
函数定义中最核心的部分是函数的代码,又称函数体。它承载了具体的函数功能,我们可以在这里面实现我们想赋予函数的功能。
就像魔法的加工盒给水瓶灌入水,并且贴上标签一样
3.返回值
3.1
函数体内部的代码写法其实和函数外没有太大区别,是一个供大家自由创作的领域。只不过写完函数代码以后,我们大多数时候需要一个返回值来向外输出数据。
函数的参数,是外界对函数的输入部分;函数的返回值,是函数对外界的输出部分。
完整的函数返回值包括三部分:
1、函数返回值的类型;
2、函数返回值的关键字return;
3、返回的具体数值
3.2
函数返回值由关键字return和具体的数值共同组成
例如:
int AddThreeNumber(int num_a, int num_b, int num_c)
{
int number_d = num_a + num_b + num_c;
return number_d;
}
1.函数返回值的类型,这里是整型 int
2.函数返回值的关键字 return
3.函数返回值的具体数值 number_d
4.函数返回值的三部分,类型 int,关键字 return,具体数值 number_d。
3.3
需要注意的是,返回值的数据类型,和函数定义里面写的数据类型需要保持一致,否则程序会报错,比如我们定义的时候写的int,但我们返回了一个字符型数据,程序就会报错。
当然,我们也可以定义一个不返回任何值的函数,这时候我们需要使用void,同时在函数体的代码中,不返回任何值。这种函数在教科书中叫做无返回值函数。
4.易错点
eg:
返回值的数据类型,和函数定义里面写的数据类型需要保持一致,否则程序会报错。
eg:
用void关键字定义无返回值函数。
eg:
形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。因此形
式参数只在函数中才有效。
eg:
实参可以是:常量、变量、表达式、函数等。在调用函数时,它们都必须有确定的值,以
便把这些值传送给形参。
5.思维导图
最后我想说的是:
在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。