05_C语言中的函数

函数格式

函数理解成一个分装功能的容器
主函数 main 函数是程序的入口

函数定义的基本格式

返回值类型 函数名()
{
\quad 函数体;
}

返回值类型:常用的基本数据类型,函数执行完后,如果需要返回一个值,用 return 返回指定类型;如果不需要返回值,用返回值类型void(表示返回为空)
函数名:一个标识符,符合规则和规范

函数的调用

自定义的函数在需要使用的地方进行调用
调用时直接写函数名

带形参的函数

形参列表:形式参考的变量,在调用的时候需要用到什么数据就用形参来表示
实参列表:有实际的值参考的值

返回值类型 函数名(形参列表)
{
\quad 函数体;
}
int Add(int a, int b)
{
\quad return a+b
}

调用的时候用实参(有实际值):会把实参传给形参,对应位置进行传参

局部变量

作用在一定区域内才能被使用的变量,出了作用域会被释放

全局变量

从定义开始往下,所有的地方都可以使用,在程序结束时才被释放

如果没有给全局变量赋值,如int x,系统自动默认为0

注意:当全局变量与局部变量同名的时候,使用遵循就近原则(但不建议取同名)

静态变量

在程序执行后定义,生命周期是程序结束后才死亡,只会被定义一次

static int a=1;

局部变量存在栈区,栈区由系统自动申请内存,程序结束之后自动释放
静态变量、全局变量存在静态全局区

静态全局区栈区
堆区代码区

堆区:自己申请的内存
代码区:函数的存储位置

for (int i=0; i<3; i++)
{
\quad static int a=10;
\quad a++;
\quad printf(“%d\n”, a)
} //会输出11,12,13 (循环时因为已经有静态变量了会第二次申请内存失败,延续之前的a的值

for (int i=0; i<3; i++)
{
\quad int a=10;
\quad a++;
\quad printf(“%d\n”, a)
} //会输出11,11,11

函数的声明

先声明函数(没有花括号和函数体,有花括号和函数体的叫定义),再调用
类型说明符 函数名(); 一般可以放在最前面

BUG 报错“无法解析的外部命令”:函数只声明未定义

址传递

地址:在定义变量,数组,函数等,系统会给她们分配内存区域(地址),把这个数据放到这个地址

& 取地址符 &a 得到a的地址编号
* 定义指针变量的标志;第二个作用是解引用,取内容
指针变量:存储地址的变量 如 int *d=&a; //把a的地址赋值给指针

址传递能够通过形参改变实参的值

void fun1(int *p1)
{
\quad print(“%d\n”, *p1);
}
int a=10;
fun1(&a); //输出的是改地址中所保存

函数的递归

在一个函数中,重复的调用自己本身

斐波那契数列 1 1 2 3 5 8 13……第n个元素值=第n-1个元素值+第n-2个元素值
求第10个元素

int fun(int )
{
\quad if (n1 || n2);
\quad \quad return 1;
\quad else
\quad \quad return fun(n-1)+fun(n-2);
}

  • 34
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值