Hello大家好!很高兴我们又见面了!
给生活添点passion,开始今天的编程之路!
目录
1、函数定义及调用
什么是函数呢?
函数就是一个固定的一个程序段,或称其为一个子程序。函数有三部分组成,除了可以实现固定运算功能,还有一个入口和一个出口。
怎么调用函数呢?
如下代码我们就定义了一个计算加法的函数并调用他。
#include<stdio.h>
int test(int x, int y)
{
return x + y;
}
int main()
{
int x = 5;
int y = 3;
int z = 0;
z = test(x, y);
printf("%d", z);
return 0;
}
函数可以没有返回值。如果函数不需要返回值,则“返回值类型”可以写“void”
在定义函数时,通常有以下几部分构成:
返回类型,函数名,参数列表,函数体。
上图我们就定义了一个返回类型为整型,函数名为test,包含两个整型参数x,y的函数。大括号里包含的为函数体。
在函数调用时,我们通过函数名(参数)的形式来调用。我们把调用函数时的参数叫实参,定义函数时的参数叫形参。需要注意以下几点:
1,函数实参和形参的数量必须相同。
2,形参在进入函数时创建,出函数时销毁
3,实参和形参对应类型必须相同。
其实,形参就像是一个实参的崇拜者,当调用函数时,形参就为实参而创建,但形参改变不了实参的本质(这一点我们会在指针章节具体来讲)
2、函数声明
细心的同学已经发现了,在上面的代码中我们把函数test的定义放在了main主函数的上面,这是因为如果函数定义在主函数下面的话,需要进行函数声明才能够使用。
一般的我们这样声明函数:
int test(int x,int y);
//其实就是去掉了大括号和函数体,加上了;
特殊的,我们可以自行创建一个.h头文件,然后用include包含我们创建的头文件,把函数的声明放到头文件中。
3、函数的嵌套调用和链式访问
函数是支持嵌套调用和链式访问。
嵌套调用是指在一个函数的定义中调用另一个函数。如下:
#include<stdio.h>
int test1(int x)
{
return x + 1;
}
int test(int x, int y)
{
int z = test1(x);
return y + z;
}
int main()
{
int x = 5;
int y = 3;
int d = 0;
d = test(x, y);
printf("%d", d);
return 0;
}
链式访问就是把一个函数的返回值传给另一个函数使用。如下;
#include <stdio.h>
#include <string.h>
int main()
{
char arr[20] = "hello";
int ret = strlen(strcat(arr,"bit"));//求字符串长度
printf("%d\n", ret);
return 0;
}
4、递归
首先什么是递归呢?简单来说就是“我用我自己”,我这样说可能有些抽象,所以我们来看下面这串代码,边看边分析:
#include<stdio.h>
int test(int x)
{
if (x == 5)
{
return 1;
}
return x + test(x+1);
}
int main()
{
int x = 0;
int z = 0;
z = test(x);
printf("%d", z);
return 0;
}
我们看到在test的函数体中又调用了test,只是传的值发生了变化,这不就是我用我自己吗?
递归的逻辑不太适合用语言描述,我画一张图大家就应该明白了:
(画的很丑大家见谅)
递归的过程是先按圈1到达4+test(5),然后在一步步算回去,直到算到第一次引用test,然后返回值。递归的内容不太好掌握,希望大家多多练习,多多思考。
今天的内容就分享到这,谢谢大家!
标签:调用,return,函数,递归,int,编程,形参,test From: https://blog.csdn.net/2401_87995839/article/details/143561100