在C语言中,函数类型最常见的有两种:库函数、自定义函数;
我们可以类比数学中的函数如一次函数y = ax + b,是通过特定的表达式(语句)完成我们所需要的功能的一个媒介(代码块/子程序)
通过对C语言编程的基本了解,我们可以知道,程序或代码实现特定的功能需要通过不同的语句和函数的组合。
不需要我们定义可以直接使用的函数(但需要包含头文件),我们称之为 库函数;
C语言标准中规定了C语言的各种语法规则,C语言并不提供库函数;C语言的国际标准ANSI C规定了一些常用的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语言标准就给出了一系列函数的实现。这些函数就被称为库函数。
库函数相关头文件可以在右边链接进行查询:https://zh.cppreference.com/w/c/header
需要用户根据要求制定的具有特定功能的函数,我们称之为 自定义函数。
例如我们需要定义一个函数Add完成两个整型变量求和的值,其代码如下
int Add(int a, int b)
//int定义了函数返回值的类型,若不需要返回值,则前置void(无参数,空的),建议养成对无返回值函数书写前置void的习惯
//Add为我们定义的函数名称,int a和int b都是自定义函数中的形式参数,注意参数需要定义类型
{
return a + b;//返回值使用return
}
我们可以注意到自定义函数的构建大致有四个部分(以Add为例):函数类型(int)、函数名称(Add)、函数参数(int a)、函数执行语句
我们可以把函数类型和函数执行语句理解称为一个公司的经营类别与核心技术,函数名称为该公司的注册名称,函数参数为公司的职员,自定义函数是C语言给码农创新的强大工具。
那么自定义函数的理解我们可以用一句话来简化记忆:某行业的某某公司依靠核心技术和员工实现了伟大创新。
注:自定义函数的参数类型非必要填写,可以根据实际情况操作使用
在自定义函数中,实参和形参是我们需要去认识和理解的两个概念。
实参是实际传递给函数的参数值,我们可以理解为自定义函数在程序中使用时,我们输入的参数值,当程序运行时,他具有了代码赋予他的值,自定义函数依靠这个值实现函数功能。
int Add(int a, int b)//在这里我们不知道a和b的值大小,我们可以理解为需要程序员去进行填空的值
{
return a + b;
}
int main()
{
int a,b;
a = 2;
b = 3;
Add(a,b);
//代码运行到这里时,我们阅读代码可以知道a和b的具体的值的大小
return 0;
}
同样的,我们在上述代码中可以知道,在自定义函数编写的代码块中,我们是无法直接阅读出函数参数的值,那么我们把这种需要程序员填值的变量称为形式参数。
形式参数只在形式上存在,当一个程序运行时,他为了存放实参传递过来的数值,才会向内存申请空间(未执行时没有占据内存空间),他的这个过程,我们称为形参的实例化。
一般的情况下,除数组类型外自定义函数的实参和形参,他们在内存中的地址是不一样的,那么我们可以这么理解,当自定义函数运行时,形参会将实参的值拷贝过来使用,而在函数执行之前,实参中的值会暂存于栈区或者寄存器中。
而对于数组类型的自定义函数,形参和实参共用同一个内存地址,值的使用实际上就是两者身份的切换。
后续我会接着补充函数其他的知识内容。
有表述或理解不当的地方希望大家能不吝赐教,三克油。‘
打怪升级中.................................................................................................................................