用函数实现模块化程序设计(2)

一:局部变量和全局变量
1.局部变量
定义变量的三种可能情况:
(1)在函数的开头定义;
(2)在函数内的复合语句内定义;
(3)在函数的外部定义。
例如已下变量的作用范围
float f1(int a) //定义函数f1
{int b,c; //在函数f1中定义b,c
.
.
. 这一块a,b,c有效
}

char f2(int x,int y) //定义函数f2
{int i,j;.
.
.
. 这一块x,y,i,j有效
}

int main() //定义主函数
{int m,n;
.
.
. 这一块m,n有效
return 0;
}

说明:
(1)主函数定义的变量也只在主函数中有效。主函数也不能使用其他函数中定义的变量。
(2)不同函数可以使用同名的变量。
(3)形参也是局部变量。
(4)在一个函数内部,可以再符合语句中定义变量,他们只在本复合语句中有效,也称之为“分程序”或“程序块”。

2.全局变量
例如以下程序
int p=1,q=5; //定义外部变量------
float f1(int a) //定义函数f1
{ 全
int b,c;
. 局
.
. 变
}
char c1,c2; //定义外部变量–| 量
char f2(int x,int y) //定义函数f2 |
{ | p
int i,j; |
. |c1,c2 q
. |作用范围
. | 的
} |
int main() //主函数-----------| 作
{
int m,n; 用
. -
. 范
.
return 0;
}-------------------------------------------------------------------------

注意:
如果在同一个源文件中,全局变量与局部变量同名时,在局部变量的范围内,局部变量有效,全局变量被“屏蔽”。

二.变量的存储方式和生存期
1.动态和静态存储方式
静态:程序运行期间由系统分配固定的存储空间。
动态:程序运行期间根据需要进行动态的分配存储空间。
2.局部变量存储类别
(1)自动变量(auto)
不写auto则隐含指定为“自动存储类别”
(2)静态存储变量(static)
静态变量没赋初值,及初值为0
2.全局变量的存储类别
(1)在一个文件内扩展外部变量的作用域
(2)将外部变量的作用域扩展到其他文件

三.例题
写一个函数,用“起泡法”对输入的10个字符按从小到大顺序排列

用函数实现模块化程序设计(2)
sort的作用是排序。
当循环开关flag=1时,输入字符串。若长度超过10,提示重新重新输入;若没有,置flag=0。
调用sort()函数进行排序
for(i=0;i<N;i++)依次显示每个排序后的字符

四.总结
1.多看书,多敲代码;
2.熟悉函数的概念,正确调用函数;
3.提前预习。