C语言(13)

一.函数

1.概念

函数也叫做子函数

C语言中函数是一个完成某项特定任务的一小段代码

函数一般分为库函数和自定义函数

2.库函数

库函数在标准库中,并且使用库函数需要引入头文件

每个库函数的使用必须包含头文件

3.自定义函数

语法形式:  ret-type fun_name(形式参数)

                 //返回类型  函数名         0到多个参数

                    {   //(函数体)

                     }

                    图一

若返回类型没写,默认会为整型

返回类型的void表示函数没有返回值

参数部分的void表示函数不需要参数

4.形参和实参

在调用函数的时候,真实传递给函数的参数为实际参数

(如图便是实际参数)

在函数定义部分,函数后边的参数为形式参数

(如图便是形式参数)

形参和实参都有各自的空间,形参是实参的一份临时拷贝

5.return语句

return后边可以是一个数值,也可以是一个表达式

如果是表达式,则会先执行表达式,再返回表达式的结果

return后边也可以什么都没有,直接写return,这种写法适合函数返回类型的void的情况

return返回的值和函数返回类型不一样,系统会自动将返回值隐式转换成函数的返回类型

return语句执行后,函数就会彻底返回,后边的代码就不再执行

如果函数中存在if等分支的语句,则要保证每种情况都要有return返回,否则会出现编译错误

6.数组做函数参数

数组传参写数组名(实参),形参也是数组的形式

形参和实参名字可以一样

数组在传参的时候,形参的数组和实参的数组是同一个

函数在设计的时候一定要功能单一

7.嵌套调用和链式访问

7.1嵌套调用

大的代码一般都是函数之间的调用嵌套

C语言(13)_第1张图片

图中main函数调用scanf,printf和get_days_of_month三种函数

但是函数是不能嵌套定义的

7.2链式访问

将一个函数的返回值作为另一个函数的参数

8.函数的声明和定义

8.1函数的声明

函数或者变量都要满足先声明后使用

在函数的声明中,形参的名字可以省略

函数的定义是一种特殊的声明

8.2多个文件

.h 文件中存放函数的声明

.c 文件中存放函数的实现

如果要使用自己的头文件:#include "add.h"

8.3static和extern

static是静态的意思。用来修饰全局变量,局部变量,函数

extern是用来声明外部符号的

8.4作用域和生命周期

作用域:限定这个名字的可用性的代码范围

局部变量的作用域是变量所在的局部范围

全局变量是整个工程

生命周期:变量的创建到销毁

8.5关于static修饰全局变量,局部变量和函数

8.5.1static修饰局部变量

static改变变量的生命周期(作用域不变

生命周期的改变实质上是变量存储类型的改变

局部变量(int i)————>静态变量(static int i)

   栈区                               静态区

其实编译器在编译代码的时候,就为静态变量分配了地址,而不是进入函数创建这种变量

8.5.2static修饰全局变量

全局变量默认是带有外部链接属性

例如:test.c中定义int i   在add.c中可使用

如何在add.c中使用  :  用extern   在add.c中声明:extern  int i 便可使用

static修饰全局变量改变了其链接属性,是的外部链接属性变成内部链接属性(只能在自己所在的.c中使用)

8.5.3static修饰函数

函数也具有外部链接属性,跟全局变量一样

所以static修饰函数使得它也变成内部链接属性

你可能感兴趣的:(c语言,开发语言)