内容正文:
第6章 函数
6.1函数概述
6.2函数的定义和说明
6.3函数的调用
6.4函数的参数
6.6变量的存储类型
6.5函数的嵌套调用与递归调用
大学C/C++语言程序设计程序设计 第6章 函数
6.6.4 全局变量
当变量定义放在函数体外时,该变量就称为全局变量,全局变量也称为外部变量。
1. 全局变量不属于任何一个函数,其作用域是:从全局变量的定义位置开始,到本文件结束为止。
2.全局变量可为各函数所共享,所以函数之间交流数据可以使用全局变量。
3. 全局变量如果只是定义而没有初始化,则自动赋0或‘\0’
大学C/C++语言程序设计程序设计 第6章 函数
int a, b;
void swap( )
{ int t;
t = a; a = b; b = t; printf(“swap:a=%d,b=%d
”,a,b);
}
main()
{ a=3;
b=5;
swap( );
printf (“main:a=%d,b=%d”,a,b);
}
例9.全局变量应用
a,b有效
t有效
大学C/C++语言程序设计程序设计 第6章 函数
int a, b;
void swap( )
{ int t;
t = a; a = b; b = t; printf(“swap:a=%d,b=%d
”,a,b);
}
main()
{ a=3;
b=5;
swap( );
printf (“main:a=%d,b=%d”,a,b);
}
swap:a=5,b=3
main:a=5,b=3
运行结果
例9.全局变量应用
大学C/C++语言程序设计程序设计 第6章 函数
特别注意:
1. 全局变量之间不能重名,但允许全局变量与某个函数内部的局部变量重名;
2. 当一个局部变量与全局变量重名时,我们访问该变量是指的访问局部变量还是全局变量呢?
在函数内部对变量的访问是指对局部变量的访问,也就是说,在函数体内部,局部变量与全局变量重名时,全局变量暂时失去作用(全局变量被屏蔽)。
大学C/C++语言程序设计程序设计 第6章 函数
例1:请输出下面程序的输出结果_________。
#include<stdio.h>
int m=13; //m 为全局变量
int fun2(int x,int y)
{ int m=3; ; //m 为局部变量
return(x*y-m);
}
main( )
{ int a=7,b=5;
printf("%d
",fun2(a,b)/m);
}
2
课堂练习:
全局变量、局部变量同名,在fun2函数内使用局部变量,在函数使用全局变量
大学C/C++语言程序设计程序设计 第6章 函数
2
例1: 外部变量定义与说明
int main()
{ printf("max=%d",max(a,b));}
int a=13,b=-8; /*外部变量定义*/
int max(int x, int y)
{int z;
z=x>y?x:y;
return(z);
}
?如何延伸全局变量的作用域
大学C/C++语言程序设计程序设计 第6章 函数
全局变量问题:
当全局变量定义在后,引用它的函数在前时,如何使用该全局变量?这就需要把该全局变量的作用域延伸至该函数;
C语言可通过外部变量说明达到此目的。
外部变量说明: extern 数据类型 变量表;
大学C/C++语言程序设计程序设计 第6章 函数
例1: 外部变量定义与说明
int main()
{ printf("max=%d",max(a,b));}
int a=13,b=-8; /*外部变量定义*/
int max(int x, int y)
{int z;
z=x>y?x:y;