C语言---函数

 C/C++总述:Study C/C++-CSDN博客

目录

1.库函数

2.自定义函数

3.型参&实参

4.嵌套调用和链式访问

5.递归


 一、库函数

 常用库函数

IO 函数
字符串操作函数
字符操作函数
内存操作函数
时间 / 日期函数
数学函数
其他库函数

 注意:

使用库函数,必须包含 #include 对应的头文件


 二、自定义函数

自定义函数和库函数一样,有返回值类型、函数名和函数参数。
int get_max(int x, int y)
{
 return (x>y)?(x):(y);
}
int 返回类型
get_max 函数名
int x,int y 函数参数

三、实参&形参

实参

真实传给函数的参数,叫实参。
实参可以是:常量、变量、表达式、函数等。
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参

 形参

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效

 注意:

形参是实参的临时拷贝

对形参的修改不会影响实参

//实现成函数,但是不能完成任务
void Swap1(int x, int y)//传值调用
{
 int tmp = 0;
 tmp = x;
 x = y;
 y = tmp;
}
//正确的版本
void Swap2(int *px, int *py)//传址调用
{
 int tmp = 0;
 tmp = *px;
 *px = *py;
 *py = tmp;
}
int main()
{
 int num1 = 1;
 int num2 = 2;
 Swap1(num1, num2);
 printf("Swap1::num1 = %d num2 = %d\n", num1, num2);
 Swap2(&num1, &num2);
 printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
 return 0;
}

四、函数的嵌套调用和链式访问

1.嵌套调用

函数和函数之间可以根据实际的需求进行组合的,也就是互相调用的
void new_line()
{
 printf("hehe\n");
}
void three_line()
{
    int i = 0;
 for(i=0; i<3; i++)
   {
        new_line();
   }
}
int main()
{
 three_line();
 return 0;
}

注意:

 函数可以嵌套调用,但不能嵌套定义

 2.链式访问

把一个函数的返回值作为另外一个函数的参数
#include <stdio.h>
int main()
{
    printf("%d ", printf("%d ", printf("%d ", 43)));
    //注:printf函数的返回值是打印在屏幕上字符的个数
    return 0;
}

//43 3 2 

五、递归

程序调用自身的编程技巧称为递归( recursion
递归的主要思考方式在于:把大事化小          抽象

 递归必要条件

存在限制条件,当满足这个限制条件的时候,递归便不再继续。
每次递归调用之后越来越接近这个限制条件。

 汉诺塔问题

 青蛙跳台问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禊月初三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值