函数的简单介绍

一、函数的概念

函数有些翻译为:子程序,c语言中函数就是一个完成某项特定任务的一小段代码,这段代码是有特殊的写法和调用方法的。函数是可以复用的,这大大提高的工作的效率

二、库函数

库函数的学习网站

cppreference.com

cplusplus.com - The C++ Resources Network

三、自定义函数

函数的语法形式

返回类型 函数名

ret_type fun_name(形式参数)

{

函数体

}

  1. 返回类型可以是void
  2. 函数名一般要取得有意义

函数举例

  1. 加法函数

也可以简化为

int Add(int x,int y)

  1. 调用函数

四、实参和形参

  1. 实参:调用函数时,真实传递的参数叫做实参
  2. 形参:在定义函数时,参数为形式参数
  3. 如上所示:x和y是形参,a和b是实参
  4. 形参只有在函数被调用时,为了存放实参传递过来的值,向内存申请空间,这就是形参的实例化
  5. 要观察函数内部,不能按F10了,要按F11

五、return语句

  1. 后边可以是数值也可以是表达式,如果是表达式,先执行表达式再返回值
  2. return后边可以什么都没有,返回类型为void

当n<0时,不符合条件可以使用return直接退出

  1. return返回的值和函数返回类型不一致,系统会自动将返回的值转换为函数的返回类型
  2. return语句执行后,函数彻底返回,后边代码不在执行
  3. 如果函数中存在if等分支语句,要确保每种情况都有return返回,否则出现编译错误

六、将数组作为函数参数

传参只需要写数组的名称

七、嵌套调用和链式访问

一、嵌套调用

例题一

输入某年某月,打印出该年有多少天?

函数之间不能包含另外一个函数,只能嵌套调用,不能嵌套定义

二、链式访问

将一个函数的返回值作为另一个函数的参数,像链条一样将函数串起来就是函数的链式访问

第一个打印:43 (有一个空格)

第二个打印:前面有3个字符 所以打印 3 (有一个空格·)

第三个打印:前面的两个字符 所以打印2

八、函数的声明和定义

函数先声明后使用

如果未进行声明时,函数的定义在函数使用的后面,则编译器会报错。因为编译器在对源码进行编译时,从第一行向下扫描,使用时并未扫描到函数的定义就会爆出警告

所以我们需要解决这一问题的话:函数声明

函数的定义是一种特殊的声明,所以如果函数定义在函数调用前也是可以的

九、多文件书写

add.h ——声明

add.c——定义

test.c——代码

一、好处:

  1. 逻辑清晰
  2. 方便多人协同
  3. 适当隐藏代码

十、static和extern

一、作用

static是静态的意思:

  1. 修饰局部变量
  2. 修饰全局变量
  3. 修饰函数

extern:

  1. 声明外部符号

二、作用域

一段程序中的代码所用到的名字并不总是有效,而限定这个名字的可以性的代码范围就称为这个名字的作用域

局部变量:局部范围

全局变量:整个工程中

三、生命周期

变量创建到变量销毁之间的时间段

程序的生命周期==main函数的生命周期

例一:

i是一个局部变量,当出了函数test(),i的生命周期就结束了,所以i就又被赋值为0

但是当n被static修饰时,出了程序n的值也会被保留下来,所以实现了累加

static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变量和全局变量是⼀样的,生命周期就和程序的生命周期⼀样了,只有程序结束,变量才销毁,内存才回收。但是作⽤域不变的:仍旧只能在test()中使用该变量

四、extern

声明外部变量

可以使用extern去声明外部文件的变量

但当外部文件的变量是使用static声明时,则会报错

⼀个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。

本质是因为函数默认是具有外部链接属性,具有外部链接属性,使得函数在整个工程中只要适当的声明就可以被使用。但是被 static 修饰后变成了内部链接属性,使得函数只能在自己所在源文件内部使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值