一、自定义函数
在正式讲函数前我们插入一个小知识,如下:
main函数过多会导致编译器报错
1、首先来复习一下上文所写的代码,下面注释已经很清楚的解释了形参与实参的关系,具体介绍上篇文章有写。
二、函数的参数
1、函数的参数可以是常量、变量、表达式、以及函数,只要实参所使的函数会返回一个符合我们调用函数的参数类型(用下面Add举例即返回一个int类型的值),那么我们也可以用函数来作为我们的函数参数。比如下面用Add(a,3)作为我们add函数的参数,他最终会返回一个值为int类型(即符合我们所调用的函数参数类型)。
2、形参只是形式上的参数,函数只有在被调用时才会给形参开辟一个空间,在函数调用完后,形参会自动销毁。
三、函数的调用
1、判断100~200之间的素数
下面是求素数的基本方式,即拿2~i-1去一个个试除。flag = 1,即表示为素数。
接下来是对求素数代码的改良
这里拿16来举例,16可以被分为2个因子相乘,那么我只需要试除sqrt(16)之前的数,看看是否有数能被16整除,这样我们就大大减少了试除的时间。
用函数的方法来判断一个数是否为素数
2、写一个函数判断一个年是不是闰年
用函数来判断一个年是否为闰年
构造函数!!!
每次写函数前我们应该先想着函数应该怎么用,是否需要传值,如果需要传值那么需要传几个值,是否需要返回值等
3、写一个函数,实现一个整形有序数组的二分查找
形式参数和实际参数的名字可以相同,也可以不同
形参arr看上去是数组,本质是指针变量
函数中数组传参实际上传递的是数组首元素的地址,而不是整个数组,所以在函数内部计算一个函数的参数部分的数组的元素个数是不靠谱的。
4、关于bool类型,了解即可
5、写一个函数,每调用一次这个函数,就会将num的值增加1
在这里可以进行传值调用,也可以进行传址调用
四、函数的嵌套调用和链式访问
1、函数之间是可以相互调用的,但是不能嵌套定义
2、链式访问
把一个函数的返回值作为另一个函数的参数
下面是strlen("abcdef")的返回值作为printf()函数的参数
strlen的返回值为无符号整形
printf()函数的返回值为打印字符的个数
以下为不规范的函数写法
函数参数里面为void明确的表示不需要给我的函数传参数,即空的。