1.函数
1.1语法
1.2语义
1.3函数声明
1.4函数调用
函数调用的三种形式:
(1)函数调用语句:
(2)函数调用在表达式中或者作为表达式的一部分:
(3)函数作为主调函数的参数:
1.5函数的参数
函数的实参和形参分别储存在不同的地址中,形参的改变并不会改变实参中的数值。形参调用的是相应的地址中的数据,而不能调用实参地址中的数据。
函数调用时,用数组名作为函数的参数,实参将其地址传递给形参,等同实现了参数之间的双向值的传递。
1.6函数的返回值
1.7函数调用的本质:
栈 :
堆:
全局区(静态区):
字符串常量区:
代码区:
1.8函数的嵌套调用:
1.8.1递归
(1)函数嵌套调用的特殊形式:自己调用自己。
(2)递归的要点:
a.递推关系
b.结束条件
(3)源码示例:
1.8.2
2.作用域
2.1概念
作用域:标识符的作用范围。
2.2作用域类别
块作用域:在一个【{}】范围内
文件作用域:不在任何一个【{}】范围内
2.3标识符的可见性
(1)可见性:程序运行到某个点,那些标识符可见。
(2)可见性的规则:
1.先定义,后使用
2.同一作用域中,不能有同名表示符
3.在不同的作用域,同名标识符相互之间没有影响
4.不同的作用域之间存在者嵌套关系:内层作用域的同名标识符,会屏蔽外层的作用域的同名标识符(就近原则)。
(3)时间上去区分:
动态变量(局部变量-空间是开辟在栈上的--自动申请自动释放)
2.4限定符
(1)【static】
static:表示存储在静态区,修饰局部变量
1.不能用变量进行初始化,只能常量初始化
2.静态区的变量:只会被初始化一次
3.值具有继承性
static修饰局部变量:将局部变量 存储在了 全局区(静态区),将局部变量的生命周期延长
static修饰全局变量:表示 将全局变量 的作用域限定到本文件中,别的文件中不能extern了
static加在函数前面:此时效果与修饰全局变量效果一样:将函数作用域限定到本文件中
(2)【auto】
1.【auto】:表示该变量是一个自动变量,栈上开辟的变量
2.【register】:CPU寄存器变量,不能取地址,建议性
(3)【extern】:
1.扩展 延伸
2.表示 此时这个a 不是在当前文件中定义的 ,
3.如果要用,请到别的文件中寻找
4.多文件编程
5.一般使用在多文件编程中:
6.如果想在当前文件使用别的文件中的 全局变量 ,
7.此时,可以使用
8.extern int a; //做声明
9.相当于,把别的文件中的变量作用域扩展到当前文件
extern可以放在函数声明中--函数声明:表示的意思 --将函数作用域扩展到当前文件