函数:
函数的作用
1.封装简化代有规律或重复性的代码,提高代码复用性
2.划分模块,提高代码可读性
函数的定义:
返回值类型 函数名(形参类型1 arg1, 形参类型2 arg2,......)形参列表
{
}
返回值类型: 返回值类型;
函数名: 一种标识符;
形参列表: 形式参数;
函数返回值
eax寄存器
EAX寄存器:累加器,在乘法和除法指令中被自动调用;在win32中,一般用在函数的返回值中。
注意事项
1.当函数返回值类型不为void时, 必须写return 值否则是一个不确定的值; 为void时, 最好retuen;
2.当函数返回值类型不写时, 编译器默认为int类型;
3.当函数返回值类型与实际返回的值的类型不一致时,以返回值类型为准,会发生数据类型隐式转换。
函数的调用
函数名(arg1, arg2, ......);实参列表
arg1是一个值(常量、变量、表达式、函数调用)
注意事项
.当函数调用时传递的实际参数类型与形参不一致时,以形参类型为准,发生数据类型隐式转换;
函数的嵌套调用
1.被调函数在主调执行到被调函数的函数调用语句时被执行;
2.被调函数执行完毕,返回到主调函数调用位置继续顺序执行;
函数传参
1. 值传递(赋值传递)
实参将值拷贝给形参;形参的空间与主调内实参的空间互相独立,仅存在拷贝关系;
2.全局变量传参
利用全局变量的全局作用域,在两个函数间进行读写实现信息传递;
3.数组传参;
数组作为函数参数传递的时候传递的是空间的编号;
arry(基地址)[1(偏移量)]
函数的声明
声明方式: 函数首部 + ‘;’
在函数调用之前,需要函数的声明;
声明和定义:
定义一般会开辟对应空间;声明一般不会开辟对应空间;
声明可以有多次, 定义只能有一次;
变量的存储类型
1.auto(自动的变量、局部变量、 默认):存放在系统栈空间,由操作系统自动管理
2.register(建议性: 寄存器变量):将数据变量存放在寄存器内;
3.static(静态变量):
(1) 修饰局部变量,称为静态变量,保存数据区,具有和全局变量一样的生存周期, 作用域不变
(2) 修饰全局变量,不改变生命周期, 限制在本文件使用
(3) 修饰函数, 限制在本文件使用 ;
4.extern(外部变量)
extern修饰全局变量,声明此变量的定义在外部源文件,
extern修饰函数,声明此函数的定义在外部源文件,
作用域与生命周期
作用域:变量在程序中所能使用的范围
局部变量:
1.局部变量的作用域从定义开始到离他最近的花括号结束;
2.作用域重叠时,最近的变量作用域会屏蔽教远的
全局变量:
全局变量的作用域,从定义开始到在整个.c结束;
函数:
函数的作用域,从定义开始到在整个.c结束;如果调用不在作用域会产生隐式声明;需要提前声明
生命周期: 变量从开辟内存到回收的整个过程;
局部变量:
从程序执行到定义时开辟内存空间,到离开作用域回收空间;
全局变量:
从编译阶段开辟内存空间(分配好了存储位置), 到整个应用程序结束回收空间;