目录
函数
在《C语言快速入门 - HelloWorld详解》中,我已简单介绍过函数,不知道大家还是否有印象,在本章则会详细介绍函数的用法。
引入
首先先来看看我们已经在数学中学过的函数吧。
还是拿最简单的函数来举例子。这就是一个简单的函数了,那么我们把它翻译成C语言的写法,那就是下面的这段代码了。
int f(int x) {
return x + 1;
}
不难发现,这个相比数学的函数复杂了一些,那么我们来慢慢看这一个个都是什么。
首先我们先来看函数头:int f(int x)
这边,第一个int
是函数的返回类型,那个f
显然就是函数名,而括号里面的那个int x
是不是和我们之前学过的定义变量的方式一模一样呢?这个其实就是一个函数的参数。
这么说可能还有一点模糊,下面我们来详细地看一看一个函数,到底是怎么样的。
函数名
什么是函数名呢,在数学函数中就是他的函数名,同样的的也是函数名。
那么C语言中的函数名则是int f(int x)
中的那个f,其实也是和数学一样的,是在括号前面的。
当然函数名也不局限于一个字母,也可以是一个单词,例如int fun(int x)
,fun
就是他的函数名。
函数名命名规则
其实函数名可以是任何除了关键字以外的所有名字,其实和变量名命名规则是一模一样的。具体可以看变量命名规则。
这边就举几个例子:void doSomething(int x)
、int haveFun()
、double calculate(int a, int b)
。
参数
首先我们来解释一下什么是参数。在数学函数中,x就是自变量,也就是一个参数。所以在C语言函数中,这个含义被保留了下来。但是为什么写成int x
而不是直接写成一个x
呢?因为在C语言中处理的不仅仅可以数字,还可以处理别的类型的数据,比如字符char
之类的,所以函数的参数是可以多样化的。
那么之前在学变量的时候我们也知道不同的数据类型所占的内存是不同的,所以在参数中,一个参数就相当于一个变量,也是有自己的内存空间的,需要我们就也得像定义变量那样去定义参数已方便系统去分配空间。
所以,只要记住,c语言中的函数参数只要像定义变量那样去定义就好了。
例如:int f(int x)
、double g(int x, int y)
、char h(int x, char y, double z)
、int fun()
在上述例子中,第二个g(int x, int y)
则说明,一个函数中可以有多个参数,中间用逗号隔开即可。同时,和定义变量一样,参数名,也就是变量名,是不可以一样的,不能g(int x, int x)
的。
同样的第三个例子h(int x, char y, double z)
,有三个不一样的参数,他们的类型也是可以相互不同的。
在最后那个例子int fun()
中,函数中没有任何参数也是可以的。
返回类型
说完了参数,那么返回类型也很好理解了。
在上面的例子中int f(int x)
最前面的那个int
就是返回类型。
在数学函数中,我们处理的仅仅是数字,所以说在中,不论x等于几,最终算出来肯定是个数字。
但是之前也说了,C语言不仅仅能够处理数字,还有别的数据类型,并且在数字类型划分上小数和整数也是不一样的,所以说,我们得规定好这个函数最终算出来的东西到底是什么类型的,这便是返回类型。
很显然,int f(int x)
中,我们最终算出来的是一个类型为int
的数字。
例子:double f(int a, int b)
、int cut(double a)
。
上述两个例子的返回类型各不相同,第一个函数f可以将int类型的变量a、b处理成一个double类型的数字;第二个函数cut则可以将double类型的变量a处理成一个int类型的数字。
void类型
在函数返回类型中还有一种特殊的返回类型:void
这个词的意思就是虚无,空无,也就是说这个函数的返回类型是空的,那么我们可以理解为,这个函数不返回任何东西。
例如:void f(int x)
、void g()
。
这些函数都是返回为空的。
到这里大家对这个void肯定还不是很理解,下面我会详细介绍。
函数头公式
<返回类型> <函数名>(<变量1>,<变量2>,...)
return
有了上面的预备知识,我们再来看看函数大括号里面的return是干什么的。
int f(int x) {
return x + 1;
}
之前介绍了返回类型,在上述函数中返回类型就是int
。既然我们声明了我们这个函数处理完之后将会吐出一个int
类型的数字,那么这边的return
的作用便是将我们处理完成的数字返回出去。
如果在上述函数中,函数的参数x=1
的话,那么返回的x+1
的值便是2,因此这个函数的值也就是2,因为这个2通过了return
语句,相当于中的那个那样使得整个函数的值变成了2。
同样的,这个函数还可以这么写:
int f(int x) {
int k = x + 1;
return k;
}
也可以通过中间变量k暂时存一下,之后再让整个函数的值等于k。
几个例子:
double div(int a, int b) {
return a / (double) b;
}
网友评论