1. 函数定义
语法:
(1)范例标识符 --- 数据范例(函数要带出的结果的范例)
注:数组范例不能做函数返回结果的范例,如果函数不必要带出什么结果,此时返回结果的范例说明符为void,如果返回结果的范例与范例说明符不一致,以范例说明符为准(范例说明符不写,默以为int)。
(2)函数名 --- 标识符,符合标识符定名规则
(3)形式参数 --- 表现改函数必要用到的数据
注:每一个形参变量都得指定范例,实参和形参必要范例匹配,参数个数相同,次序一一对应,如果不必要接收现实参数,形参一般计划为void
(4)函数体代码 --- 实现函数功能的代码。
写法:
- 数据类型 形参变量名1,数据类型 形参变量2...
- int a,int b
- int a,b // 不能这样写
复制代码 2. 函数调用
函数调用的本质:现实上是使用栈的布局,先进后出,包管了函数可以层层嵌套调用。
调用者和被调用者:main函数时整个程序的入口,只能是调用者
注:函数不支持嵌套定义,但是可以嵌套调用
函数名是函数的入口地址。
3. 递归
可以实现循环的功能,是一种特殊的循环。
直接递归:自己调用自己
间接调用:调用其他函数,其他函数调用了自己,这样又实现了调用自己。
代码实现思路:
(1)递推关系 --- 从问题n到问题n - 1;
(2)递推竣事的条件
eg:前 n 项的累加求和
sum(n)=> sum(n-1)+ n //递推关系
n = 1; // 竣事条件
- #include<stdio.h>
- int sum(int n)
- {
- if(n==1) // 递推结束条件
- {
- return 1;
- }else
- {
- return sum(n-1)+n; // 递推关系
- }
- }
- int main(void)
- {
- int n;
- printf("Input a num:");
- scanf("%d",&n);
- int ret = sum(n);
- printf("%d\n",ret);
- return 0;
- }
复制代码 代码运行结果:
4. 数组作为函数参数
(1)数组元素作为函数参数--- a[0]
(2)数组自己作为函数参数--- a
形参--- 写成数组形式,还必要数组长度
实参--- 数组名,数组长度
- printfArray(int a[],int len) // 形参
- printArray(a,len); //调用
复制代码 eg:打印数组元素
- #include<stdio.h>
- void printArray(int a[],int len) // 定义形参
- {
- int i = 0;
- for(i = 0;i < len;++i)
- {
- printf("a[%d] = %d\n",i,a[i]);
- }
- }
- int main(void)
- {
- int a[] = {1,2,3,4,5,6,7,8,9};
- int len = sizeof(a)/sizeof(a[0]);
- printArray(a,len); // 调用时传入实参
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |