一 .函数
1.1函数的概念
封装一段代码,使其便于使用
优点:
降低耦合度
减少代码复用率
提高代码可读性
1.2函数的分类
系统调用 系统提供,可以直接操作内核的函数
库函数 系统提供,不能直接操作内核的函数
自定义函数
1.3函数的使用步骤
声明
定义
使用
1.3.1.调用和定义的关系
一个函数先调用,再定义,需要对函数进行声明,可以调用多次,每次都执行一遍函数中封装的代码
一个函数先定义,再调用,不对函数进行声明也可以运行.
如果一个函数不被调用,那么这个函数不会起任何作用
1.4.函数的定义
返回值类型 函数名(形参列表)
{
代码块
return 0;
}
返回值类型:函数的返回值的数据类型,如果没有返回值,类型则为void
再函数中用return 来返回返回值
函数名:标识符,自定义的
形参列表:定义的多个变量(函数需要的变量),可有可无,多个参数直接用逗号隔开
代码块:封装的代码
return 表示函数结束,并返回返回值,结束当前函数
return 关键字后有变量或值,表示结束当前函数并且返回的值或变量,其返回值类型就是这个值或变量的数据类型
1.4.1函数的定义位置
定义再函数外
注意
同一程序中函数名不能相同
1.5函数的声明
extern 函数名(形参列表)
注意:
此时形参列表中的变量名可以忽略不写
声明位置:
函数外
1.6函数的调用
无返回值的函数的调用
函数名(形参列表);
有返回值的函数的调用;
有返回值但不接受返回值
函数名(形参列表);
有返回值并接收返回值
变量名 = 函数名(形参列表)
注意:
形参列表与调用的函数的形参列表必须一致(形参类型,形参数量,形参顺序)
1.7函数的存储相关
代码段:存储函数代码。
栈区:存储局部变量、函数参数、返回地址等。
堆区:存储动态分配的内存。
静态区/全局区:存储静态变量和全局变量。
寄存器:用于存储常用或临时数据。
调用约定:规范函数调用的细节。
1.8函数的特殊情况
1.8.1多重调用
在A函数中调用B函数,B函数中调用C函数,.....
1.8.2递归
函数的函数体中调用当前函数
1.9外部函数和内部函数
1.9.1外部函数
定义在函数外的函数(大多数函数),可以在程序的任何一个文件中使用
1.9.2内部函数
使用static关键字定义的外部函数
语法:
static 返回值类型 函数名(形参列表)
{
函数体
}
特点:
该函数只能在该文件中使用
二.变量的类别
1.局部变量
定义位置:函数中
语法: 变量类型 变量名;
默认值:随机数
作用域:当前代码块,即在一个{}中
生命周期:随着当前函数的调用而生成,随着所在函数的结束而销毁
存储位置:
栈内存
2.全局变量
定义位置: 函数外
语法: 变量类型 变量名;
默认值:0
作用域:当前程序中
生命周期:随着程序的启动而启动,当程序结束时,变量销毁
存储位置:
静态全局区
3.静态局部变量
定义位置: 函数内
语法: static 变量类型 变量名;
默认值:0
作用域:当前代码块
生命周期:随着函数的第一次调用而生成,随着所在程序的执行完成而销毁
存储位置:
静态全局区
4.静态全局变量
定义位置: 函数外
语法: static 变量类型 变量名;
默认值:0
作用域:当前文件中
生命周期:随着程序的启动而生成,随着所在程序的执行完成而销毁
存储位置:
静态全局区
5.const修饰变量
特点
const修饰的变量等于常量
只能赋值一次
语法:
const 变量类型 变量名 = 值
三.头文件与源文件
1.头文件
负责声明对应的源文件中的所有内容,如下
全局声明的变量
函数的声明
类的定义
结构体的定义
引入的头文件等
注意:
文件的后缀名必须已.h结尾
头文件名必须和源文件的名称相同(大小写也必须一致)
2源文件
负责实现代码的内容
注意:
要在对应的源文件中引入头文件
自己写的头文件用""来引用,系统的使用<>来引用
区别:
"":现在指定的文件下来查找头文件,找不到会再去系统路径中去找
<>:直接去系统的路径下去寻找
3.头文件展开
在预编译过程中,会将头文件进行展开,并且复制到引用的文件当中去

被折叠的 条评论
为什么被折叠?



