相信很多小伙伴们在学习C语言时经常听到这样的话:C语言的基本单位是函数,那么函数到底是什么呢?它的结构有是什么呢?都有哪几种类型呢?下面我来告诉大家。
函数简单来说就是能够实现某种功能的代码块。说到底它是由许多行代码组成的,其存在的意义就是为了实现某些具体的功能,它的存在可以使复杂的问题变得简单。
一、函数的组成结构:
函数必须存在的部分是函数头部和函数体。函数头部包括函数名、函数返回值类型、函数参数;函数体包括函数返回值和具体实现功能的代码块。
#include <stdio.h>
//一个主函数(main函数)
//int是函数返回值类型,该函数的返回值是0,所以是整形
//main是函数名
//圆括号内部是函数的参数,如果无参数可以省略或者写void
int main(void)
{
//具体实现功能的地方,用来写代码
return 0;//函数的返回值
}
1、函数名:函数名是写函数时必不可少的,它在函数声明、定义、调用时都有用到。函数名的命名规则与标识符一样,只能用字母(区分大小写)、数字和下划线组成,且数字不能开头。其中不能包含空格、特殊字符、汉字等。
2、函数类型:这个类型具体是函数返回值的类型。对于有返回值的函数,其类型是返回值类型;没有返回值的函数,其类型就是void。函数类型如果省略不写,则默认是int型。
3、函数参数:如果函数的作用是实现某种特定功能,那么函数参数就是帮助实现这个功能的“组成部分”,在实现功能时是需要用到这些参数的,当然这个参数可有可无,也可以有多个。如果无参数,可以不写或者写void。对于有参数的函数,在写参数时必须对所有参数进行定义。
void的意思是空,写在函数类型那里就是空类型,写在函数参数那里就是空参数。
4、函数体:函数体是实现函数功能的地方,用来书写代码。是花括号开始到花括号结束。
5、函数的返回值:对于一个函数来说,实现其功能后可以返回一个值,这个值就叫做函数的返回值,这个返回值利用return返回,返回的值是什么类型的,则该函数的类型就是什么类型的。当执行到return语句时,该函数就执行结束了,会跳出该函数。如果函数无返回值,则可以不写return,函数类型为void。
注:
空函数就是函数的类型、参数、返回值均为空。其作用是当想用函数实现某个功能时,但是还不知道是什么功能,就先写一个空函数,等到具体了功能后再次填充。
其格式如下:
void 函数名() {}
二、函数的分类:
任何东西在某些特定情况下都是可以分类的,分类也可以使我们更好地认识它们,当然函数也不例外。
1、库函数和自定义函数:函数可以分为库函数和自定义函数。库函数是由C语言提供的函数,可直接使用,使用之前需要引用包含它的头文件,比如想使用printf函数,就要引用头文件stdio.h。自定义函数是根据想实现的功能自己去定义的函数,按照上面的函数格式就可以自己定义函数了。
2、根据函数有无参数可以分为有参函数和无参函数。有参函数就是使用函数时需要传参进去,无参函数则不需要。
三、函数的声明、定义与调用:
1、函数声明:函数声明就好像是告诉编译器我要使用这个函数,这个函数的类型和参数也要声明,格式如下:
//有返回值和参数的函数的声明
返回值类型 函数名(参数类型1 参数名1, 参数类型2 参数名2,...参数名n 参数n);
//比如下面的形式
int fun(int num1, int num2);
//无返回值或参数可以用void代替
void fun();
//函数声明结尾一定要写分号
注:
函数声明一定要写在主函数前,因为程序从主函数开始而开始到主函数结束而结束,如果函数声明写在主函数后面,那么编译器就不知道存在这个函数声明,可能会报错。
2、函数定义:函数定义就是利用代码具体实现函数功能。
3、函数调用:对于函数来说,仅仅是定义和声明了,但是并没有在主函数中调用的话,还是不会被执行的。因为程序只执行主函数中的内容。调用格式如下:
//函数调用
fun(a, b);
//a和b是两个实参,即主函数中定义的变量或定义在fun函数前的全局变量
//函数调用时不需要写函数类型,但是要写分号
函数只声明和定义,但是不调用,这其实是无意义的。所以自定义函数定义后,一定要调用才有意义。
以上就是我这次分享的内容啦!写的不好,请多担待!