(C 课件)4章 变量作用域第(函数2)讲解
C语言的变量作用域及头文件
C语言的变量作用域及头文件C语言是一种结构化的、过程型的通用编程语言,广泛用于系统编程和应用编程。
在C语言中,变量作用域指的是变量在程序中的可见范围,而头文件则是用来引入其他源文件中定义的函数和变量的文件。
一、变量作用域1.全局作用域在C语言中,全局变量在定义它的源文件中全局可见,也可以通过extern关键字在其他源文件中访问。
全局变量的生命周期与整个程序的运行周期相同。
全局变量在任何地方都可以使用,但应注意避免滥用全局变量,以避免潜在的命名冲突和程序难以维护的问题。
2.局部作用域局部变量只在其定义的函数、语句块或者循环等局部范围内可见,超出这个范围后就无法访问。
局部变量的生命周期仅限于其所在的函数、语句块或是循环等。
局部变量的作用是封装数据,提高程序的模块性和可读性,避免命名冲突,并可以节省内存空间。
3.形式参数作用域形式参数是函数定义中指定的参数,参数列表位于函数的括号中。
形式参数只在函数内部可见,在函数调用时将实际参数传递给形式参数,从而进行函数的运算。
形式参数的作用是接收传入的实际参数,供函数内部使用。
参数的命名应该具有描述性,以增加程序的可读性。
二、头文件C语言中的头文件使用扩展名为.h,用于定义函数原型、数据类型、宏定义等信息,并提供给其他源文件进行引用。
头文件的作用是将相关的代码集中到一个文件中,方便代码的维护和重用。
常用的头文件有stdio.h、stdlib.h、string.h等,它们包含了许多C语言的标准函数和宏定义。
使用头文件的方式是使用#include指令将头文件包含到源文件中。
头文件的编写应尽量使用头文件宏和条件编译等技术,避免多次包含同一个头文件以及头文件之间的依赖关系。
在编写自己的头文件时,需要注意以下几点:1.避免在头文件中定义全局变量,以免造成重复定义错误或者命名冲突。
2. 使用#ifndef、#define、#endif等预处理指令来防止头文件的重复包含。
3.在头文件中只定义函数原型、数据类型和宏定义等,不要在头文件中实现函数的具体代码,以免造成重复定义错误。
函数与变量的作用域
函数与变量的作用域
❖1.2 动态存储变量与静态存储变量
▪ 动态存储变量
• 系统在程序运行期间根据需要对存储空间进行动态分配的变量称为动态存储变量 • 在函数中定义的局部变量和形参都属于动态存储变量 • 动态存储变量的值在函数调用结束后就无法使用了,即变量的生存期并不等于程序的整个执行期 • 每次调用函数时,系统会为这些变量重新分配存储空间,这就意味着如果在一个程序中两次调用
▪ 可以使用static关键字将全局变量的作用域局限于定义它的文件中,而不能被其它文 件访问
16
函数与变量的作用域
❖ 1.3 内部函数与外部函数
▪ 内部函数
• 如果一个函数只能被本文件中的函数调用,则称之为内部函数。通过使用static关键字,可以将一个函数定 义为内部函数,定义格式如下:
static 类型符 函数名(形式参数) { 函数体 }
3
函数与变量的作用域
❖ 局部变量
▪ 在一个函数内部定义的变量被称作局部变量,也叫内部变量。局部变量只在定义它 的函数范围内有效,即在此函数之外无法使用这些变量。
▪ 在一个函数内部,还可以在复合语句中定义变量,其作用域只局限于该复合语句 ▪ 一般要求将局部变量的定义放在函数的开始,尽量不要在函数中间定义局部变量。
getch();
}
double term(int n)
{
static double t=1.0; /*静态局部变量的声明与初始化*/
t=t*n;
return(t);
}
15
函数与变量的作用域
❖ 说明:
▪ 静态局部变量的生存期是从该变量被分配存储空间开始,即定义该变量的函数被调 用开始,直到程序结束。但是,静态局部变量的作用域仍然局限于定义它的函数, 静态局部变量在上一次调用结束后被保留下来的值,也只能在该函数的下一次调用 中使用,而不能被其它函数使用
变量作用域
2、全局变量的作用是使得函数间多了一种传递信息的方式。如果在一个程序中各个函数都要对同一个信息进行处理,就可以将这个信息定义成全局变量。另外,采用这种方式,可以从某个函数内部得到多个计算值。
3、全局变量的作用范围是从定义位置起直到程序结束处。如果想在定义全局变量的前面直接使用全局变量是不可能的。如果就是想用,就将全局变量的定义往前写一写。另外还有一种方法,不用改变全局变量的定义位置,就是在要使用全局变量的函数内使用extern关键字对要使用的全局变量说明一下,告诉系统,我要使用的这个变量可是全局变量啊!
4、如果在一个函数内部,一个局部变量和一个全局变量重名,那么是局部变量起作用。而外部变量不起作用。
�
3、形参也属于局部变量,作用范围在定义它的函数内。所以在定义形参和函数体内的变量时是肯定不能重名的了。
4、在复合语句内部也可以定义变量,这些变量的作用域只在本ቤተ መጻሕፍቲ ባይዱ合语句中。只在需要的时候再定义变量,这样做可以提高内存的利用率。
二、全局变量
在函数外部定义的变量称作外部变量,外部变量属于全局变量。
变量的作用域
后面这几节,我们来学习有关变量的一些特性。这一节我们学习变量的作用域。
我们在前面的学习中,使用了很多的变量。但是任何一个变量都是有它的管辖范围的(作用域),
就是说,在定义了一个变量以后,并不是在程序的任何地方都可以使用这个变量。
只有在变量的作用域内才能使用这个变量。在C语言中如果按作用域分,变量分为局部变量和全局变量。
2、不同的函数中可以使用相同的变量名,但它们是不同的变量。记得数在执行时,系统要给它分配一块单独的内存吗?所以虽然变量是一样的,但系统看到它们定义在不同的函数中,就认为它们是不同的变量。这样做有个好处,可以在函数内部,根据需要设置任何的变量名。如果不是这样,那么在一个函数内定义了一个变量名后,在其它函数内就不能再使用相同的变量名了。
《C语言的变量》ppt课件
静态部分变量
部分变量加以static进展声明就是静态部分变量。
【例3-5】经过求1到100的和,阐明静态部分变量的运用方
法。
静态全局变量
全局变量加以static进展声明就是静态全局变量。
.
13
3.3.4 外部变量
在前面讲全局变量时曾经提到,假设需求扩展外部变量的作用域, 使其在程序中的各个源文件和各个函数中都可以运用此全局变量, 就需求用“extern〞关键字来声明全局变量。外部变量声明的普 通格式为:
变量在程序运转过程中,因需求运用才建立,而运用终了就被 删除。具有动态生存期的变量有部分自动变量和存放器变量,具 有动态生存期的变量存储在程序的动态数据区中。
【例3-1】运用for循环延续打印变量值,以阐明全程生存期
和动态生存期的区别。
.
4
3.1.2 变量的作用域
全局作用域 对于具有全局作用域的变量,可以在程序的任何位置访问它们。 部分作用域 变量在复合语句内部或者函数内部声明,无法被复合语句外或
register 数据类型 变量名
【例3-6】经过求20的阶乘,引见存放器变量。
.
15
3.3.6 变量存储类型小结
按照作用域分类如下图:
局部变量
自动变量 静态局部变量 寄存器变量 函数形参
非静态全局变量 (可用 extern 声明)
静态全局变量
.
16
3.3.6 变量存储类型小结
按照生存期分类,如下图:
extern变量名
外部变量的运用主要分为两种情况:
〔1〕在一个源代码文件内声明外部变量。
〔2〕在多个源代码文件间声明外部变量。
.
14
3.3.5 存放器变量
变量的作用域和生存期PPT课件
2.静态局部类型
定义局部变量时,使用Static修饰,可以在不改变局部变量的可见域的前提下, 使变量成为静态的,即当函数撤销后,变量的值还保留。或者说,这些变量的生存期 是永久的,只是在变量的作用域外是不可见的。这样,避免了全局变量的值可以被多 处修改将引起的副作用,又可以使函数基于前一次调用的值的基础上工作。
【例4-9】演示全局变量的作用域
• Int p=1,q=5; • Float f1(int a) •{ • int b,c; • ……. •} • Char c1,c2; • Char f2(int x,int y) •{ • int i,j; • ……. •} • Int main(void) •{ • Int m,n; • ……. •}
main( ) {int k=4,m=1,p;
p=func(k,m); printf(“%d,”,p); p=func(k,m); printf(“%d\n”,p);}
func(a,b) int a,b; {static int m=0,i=2; i+=m+1; m=i+a+b; return(m);}
4.5.2 C语言中变量的存储类型
根据变童的作用域将变量分为全局变量和局部变量,根据变量的生存期将变量分 为动态变量和静态变量。因此,C语言根据作用域和生存期将变量整合成四种存储类型。
(1)局部自动类型。在函数内部用标识符auto或register 声明。 (2)静态局部类型。在函数内部,使用Static声明。 (3)静态全局类型。在函数外部,使用Static。声明,也称为静态外部变量。 (4)全局类型。不需要标识符声明。在函数外部直接声明即可,通常称为外部变 量。
1. AUTO 存储类型和REGISTER 存储类型
变量的作用域
变量的作用域⏹所有变量都有自己的作用域,即该变量的有效区域。
⏹按照变量的作用域,可分为:⏹局部变量(内部变量)⏹全局变量(外部变量)局部变量⏹指在一个函数内部定义的变量,它只在本函数的范围内有效,在此函数之外不能使用这些变量⏹说明:⏹main函数中定义的变量也是局部变量,只在main函数中有效⏹不同函数中同名变量,占不同内存单元,互不干扰⏹函数的形式参数也是局部变量⏹可在复合语句中定义变量,它们只在复合语句的内部有效⏹变量的定义必须在可执行语句之前,即进入{ }后,首先要定义变量全局变量⏹在所有函数之外定义的变量⏹它的有效范围从定义变量的位置开始到本源文件结束,一直占内存⏹如在定义时没初始化,系统自动初始化为0#include <stdio.h>int p=1 , q=5 ;float f1( int a ){ float r ;:全局变量s的有效范围全局变量p和q 的有效范围全局变量m和n 的有效范围a,r 等为局部变量局部变量和全局变量示例⏹全局变量的使用增加了函数间数据联系的渠道,由于在同一文件中的所有函数都能使用全局变量, 所以可以利用全局变量从函数中得到一个以上的返回值,而使用return只能返回一个值。
⏹例: 求某班成绩的平均分,最高分和最低分。
#include <stdio.h>float max=0, min=100 ;float average( int n );int main(void){ int m; float ave2 ;scanf(“%d”, &m);ave2 = average(m);printf(“%f,%f,%f\n”, ave2, max, min); return 0;} float average( int n){ int i; float s, ave1, sum=0;for(i=1; i<=n ; i++){ scanf(“%f”,&s);if (s>max) max = s;if (s<min) min = s;sum=sum+s;}ave1=sum/n;return (ave1);}全局变量的使用⏹建议不要过多的使用全局变量⏹全局变量在程序的执行过程中一直占用存储单元⏹它使函数的通用性降低⏹它会降低程序的清晰性⏹若全局变量与局部变量同名,则全局变量被屏蔽#include <stdio.h>printf("max=%d",max(a, b));运行结果:max=8#include <stdio.h>int x = 10;void f( ){ int x = 1; x = x + 1;printf(“x=%d\n”, x );}int main(void){ x = x + 1;printf(“x=%d\n”, x); f( );return 0;}运行结果:x=11x=2变量的存储方式⏹从变量的作用域(即从空间)角度来分,可分为局部变量、全局变量。
C 讲义第四章 函数和作用域
4.5函数重载
函数的重载是指同一个函数名可以对应着多个函 数的实现。函数重载要求编译器能够唯一地确定调用 一个函数时应执行哪个函数代码。
一.参数类型不同的重载函数
#include <iostream.h> int abs(int x) { return x>0 ? x:-x; } double abs(double x) {return x>0 ? x:-x; }
int min(int a,int b, int c) {int t=min(a,b); Return min(t,c); }
int min(int a,int b,int c,int d) { int t1=min(a , b);
int t2=min(c , d); return min(t1 , t2); }
二.设置函数的默认值 在C++中允许在函数说明或定义时给一个
或多个参数指定了默认值.
4.4内联函数
一.作用 内联函数不是在调用时发生控制转移,而是在编译时将函
数体嵌入在每一个调用语句处,这样就节省了参数传递、控 制转移等开销。 二.定义格式:
inline 类型说明 被调用函数名(形叁表) 三.使用说明:
4.6函数的嵌套调用和递归调用
一.函数的嵌套调用
一个函数可以调用其他函数
二.函数的递归调用
一个函数可以调用自身的函数
4.7作用域
一.作用域的种类 程序级: 文件级: 函数级: 块级:
二.局部变量和全局变量 1.局部变量
* 是指作用域在函数级和块级的变量 *分类:
自动(auto)变量 内部静态(static)变量 函数的参数
变量的作用域
变量的作用域变量的作用域在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放。
这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了。
这种变量有效性的范围称变量的作用域。
不仅对于形参变量,C语言中所有的量都有自己的作用域。
变量说明的方式不同,其作用域也不同。
C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。
一、局部变量局部变量也称为内部变量。
局部变量是在函数内作定义说明的。
其作用域仅限于函数内,离开该函数后再使用这种变量是非法的。
例如:int f1(int a) /*函数f1*/{int b,c;……}a,b,c作用域int f2(int x) /*函数f2*/{int y,z;}x,y,z作用域main(){int m,n;}m,n作用域在函数f1内定义了三个变量,a为形参,b,c为一般变量。
在f1的范围内a,b,c有效,或者说a,b,c变量的作用域限于f1内。
同理,x,y,z的作用域限于f2内。
m,n的作用域限于main函数内。
关于局部变量的作用域还要说明以下几点:1. 主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。
同时,主函数中也不能使用其它函数中定义的变量。
因为主函数也是一个函数,它与其它函数是平行关系。
这一点是与其它语言不同的,应予以注意。
2. 形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
3. 允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。
如在例5.3 中,形参和实参的变量名都为n,是完全允许的。
4. 在复合语句中也可定义变量,其作用域只在复合语句范围内。
例如:main(){int s,a;……{int b;s=a+b;……b作用域}……s,a作用域}[例5.11]main(){int i=2,j=3,k;k=i+j;{int k=8;if(i==3) printf("%d\n",k);}printf("%d\n%d\n",i,k);}main(){int i=2,j=3,k;k=i+j;{int k=8;if(i=3) printf("%d\n",k);}printf("%d\n%d\n",i,k);}本程序在main中定义了i,j,k三个变量,其中k未赋初值。
变量的作用域
变量的作用域在编程语言中,变量是用来存储和代表数据的标识符。
变量的作用域指的是变量在程序中的可见性和访问性。
作用域规定了变量在程序中的命名空间,确定了变量可以被访问的范围。
变量的作用域分为局部作用域和全局作用域。
局部作用域是指变量只能在特定的代码块或函数中被访问和使用,而超出这个范围的其他代码是不能访问和使用这个变量的。
全局作用域是指变量在整个程序中都是可见和可访问的,可以被任意代码段使用。
局部作用域的变量在它所在的代码块或函数被执行时创建,在代码块或函数执行完毕后销毁。
这种作用域的好处是可以避免变量的命名冲突,提高代码的可读性和维护性。
例如,在一个函数中,可以定义一个局部变量来暂存计算结果,而不用担心与其他函数中的同名变量冲突。
全局作用域的变量可以在任何地方被访问和使用,包括其他代码所在的不同文件。
全局变量一般在程序的一开始被定义,在程序的任何地方都可以使用。
全局变量的好处是方便数据共享和传递,可以在整个程序中共享数据。
然而,滥用全局变量可能会导致命名冲突和不可预测的行为,因此应当谨慎使用全局变量。
除了局部作用域和全局作用域之外,还有词法作用域(也叫静态作用域)和动态作用域。
词法作用域通过静态的代码分析来确定变量的作用域,而动态作用域是在运行时根据调用堆栈来确定变量的作用域。
大多数编程语言都使用词法作用域,因为它更易于理解和调试。
变量作用域的一个常见问题是变量的隐藏和覆盖。
当在局部作用域中定义一个和全局作用域中同名的变量时,局部作用域中的变量会隐藏全局作用域中的同名变量。
这个隐藏的变量只在局部作用域中有效,一旦离开了局部作用域,全局作用域中的变量又会变得可见。
变量的作用域对于程序的正确性和性能都非常重要。
正确地定义和使用变量的作用域可以避免命名冲突和混乱,提高代码的可读性和可维护性。
此外,在局部作用域中定义的变量比全局作用域中的变量更容易被垃圾回收,因此可以节省内存和提高程序的性能。
总之,变量的作用域定义了变量在程序中的可见性和访问性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.
块域【例4.7】
4.6.1 存储类型
4.4.2 生命期
4.6.1 存储类型
C++中关于存储类型的说明符(storage class specifier)有四 个:auto、register、static和extern。其中用auto和register修 饰的称为自动存储类型,用static修饰的称为静态存储类型, 用extern修饰的称为外部存储类型。
4.3 全局变量和局部变量
4.3.1 变量的存储机制与C++的内存布局 4.3.2 全局变量 4.3.3 局部变量
4.3.1 变量的存储机制与C++的内存布局
操作系统为一个 C++ 程序的运行所分配的内 存分为四个区域,如图4.3 所示:
自由存储区 (动态数据) 栈区(函数局部数据) (main()函数局部数据)
t= 4.5
打印main() 中的t=4.5 调用 fun( ) 函数 fun( ) 打印fun() 中的t=5
打印main() 中的t=4.5
4.4 函数调用机制
局部变量占用的内存是在程序执行过程中“动态”地建立 和释放的。这种“动态”是通过栈由系统自动管理进行的。
调用过程:
(1)建立栈空间; (2)保护现场:主调函数运行状态和返回地址入栈; (3)为被调函数中的局部变量分配空间,完成参数传递; (4)执行被调函数函数体; (5)释放被调函数中局部变量占用的栈空间; (6)恢复现场:取主调函数运行状态及返回地址,释放栈空间; (7)继续主调函数后续语句。
n=100 n=100*2 =200 打印 200 调用 func( ) 打印 400 函数 func( ) 200*2 =400
4.3.3 局部变量
局部变量引入:
定义在函数内或块内的变量称为局部变量。 局部变量在程序运行到它所在的块时建立在栈中, 该块执行完毕局部变量占有的空间即被释放。故亦称 为自动变量。 局部变量在定义时可加修饰词 auto,但通常省略。 局部变量在定义时若未初始化,其值为随机数。 程序中使用的绝大多数变量都是局部变量。
【例4.9】 显示同名变量可见性。
100
200
300
1100 500 600 int n=100; 100 #include <iostream.h> 500 200 300 int main(){ int i=200,j=300; cout<< n<<'\t'<<i<<'\t'<<j<<endl; { //内部块 int i=500,j=600,n; 内n=500+600 =1100 n=i+j; cout<< n<<'\t'<<i<<'\t'<<j<< endl; 内 j= 600 //输出局部变量n 内 i= 500 cout<<::n<<endl;//输出全局变量n 外部 j=300 } n=i+j; //修改全局变量 外部 i=200 cout<< n<<'\t'<<i<<'\t'<<j<< endl; 全局n= 500 100 200+300=500 return 0;}
4.6.1 存储类型
2 静态存储类型
static说明的变量称为静态变量。根据定义的位置不同,还 分为局部静态变量和全局静态变量,也称内部静态变量和外部 静态变量。静态变量均存储在全局数据区,如果程序未显式给 出初始化值,则等效初始化为全0;静态变量占有的空间要到整 个程序执行结束才释放,故静态变量具有整个程序执行期间的 生命期。
4.6 存储类型与标识符的生命期
存储类型(storage class)决定标识符的存储 区域,即编译系统在不同区域为不同存储类型的标 识符分配空间。由于存储区域不同,标识符的生命 期也不同。所谓生命期,指的是标识符从获得空间 到空间释放之间的期间,标识符只有在生存期中、 并且在其自己的作用域中才能被访问。
1
自动存储类型
自动变量为用auto说明的变量,通常auto缺省。局部变量都是自 动变量,生命期开始于块的执行,结束于块的结束,其原 因是自动变量的空间分配在栈中,块开始执行时系统自动 分配空间,块执行结束时系统自动释放空间。故自动变量 的生命期和作用域是一致的。 为提高程序运行效率,可以将某些变量保存在寄存器中,即用 register说明为寄存器变量,但不提倡使用。
4.3.2 全局变量
全局变量引入:
在所有函数之外定义的变量称为全局变量。 全局变量存放在全局数据区,因编译器自动将 该区清为全 0 ,如果用户在定义时不显式给出初始 化值,则等效初始化为全0 。 全局变量可定义在程序开头,也可定义在中间 位置,该全局变量在定义处之后的任何位置都是可 以访问的,称为可见的。
1. 块域
对于块中嵌套其它块的情况,如果嵌套块中有同 名局部变量,服从局部优先原则,即在内层块中屏 蔽外层块中的同名变量,换句话说,内层块中局部 变量的作用域为内层块;外层块中局部变量的作用 域为外层除去包含同名变量的内层块部分。 如果块内定义的局部变量与全局变量同名,块内仍 然局部变量优先,但与块作用域不同的是,在块内 可以通过域运算符“::”访问同名的全局变量。 【例4.9】 显示同名变量可见性。
4.5
作用域与标识符的可见性
作用域: 指标识符能够被使用的范围。只有在作 用域内标识符才可以被访问(称为可见)。 本节重点讨论局部域和文件域(全局域),其中 局部域包括块域和函数声明域。任何标识符作用域的 起始点均为标识符说明处。 下面分别介绍:
1 块域 2 函数声明域 3 文件域
1. 块域
块的引入:
全局数据区(全局、静态) 代码区(程序代码)
4.3.1 变量的存储机制与C++的内存布局 存储区域说明:
(1)代码区(Code area):存放程序代码,即程序
中各个函数的代码块; (2)全局数据区(Data area):存放全局数据和静 态数据;分配该区时内存全部清零,结果变量的所有字 节等效初始化为全0。 (3)栈区(Stack area):存放局部变量,如函数中 的变量等;分配栈区时不处理内存,即变量取随机值。 (4)自由存储区(Free store area):存放与指针相 关的动态数据。分配自由存储区时不处理内存。
3 外部存储类型
一个C++程序可以由多个源程序文件组成。多文件程序系统可 以通过外部存储类型的变量和函数来共享某些数据和操作。 在一个程序文件中定义的全局变量和函数缺省为外部的,即其作 用域可以延伸到程序的其他文件中。其他文件如果要使用这个文 件中定义的全局变量和函数,应该在使用前用“extern”作外部声 明。外部声明通常放在文件的开头(函数总是省略extern)。
【例4.6】 使用局部变量的例子。
4.3.3 局部变量
【例4.6】 使用局部变量的例子。
t=5
void fun(){ auto int t=5; // fun()中的局部变量,auto可省略 cout<<"fun()中的t="<<t<<endl; } int main(){ float t=4.5; //main()函数中的局部变量 cout<<"main() 中的 t="<<t<<endl; fun(); cout<<"main() 中的 t="<<t<<endl; return 0;}
【例4.7】 输入两数,按从大到小的顺序保存,并输出结果。
int main(){ 3 栈 a= 5 int a,b; //具有函数域 b= 3 5 cout<<"输入两整数:"<<endl; cin>>a>>b; t= 3 cout<<“a="<<a<<'\t'<<"b="<<b<<endl; if(b>=a){ 结果 int t; //具有块域 a=3 b=5 t=a; a=b; b=t; //交换a,b的值 a=5 b=3 } cout<<"a="<<a<<'\t'<<"b="<<b<<endl; return 0;} 上述程序若在最后一个cout语句处增加: cout<<t<<endl; 则编译时会提示错误,因为变量t的作用域只在if语句中,其它地方不可见。
【例4.5】 多个函数使用全局变量的例子。
4.3.2 全局变量【例4.5】
【例4.5】 多个函数使用全局变量的例子。 int n=100; void func(){ n*=2; } int main(){ n*=2; cout<<n<<endl; func(); cout<<n<<endl; return 0;}
1. 块域
【例4.8】设计函数完成两数
交换,用主函数进行测试。 由VC++运行,结果如下: 输入两整数: 35 调用前:实参a=3,b=5 调用中… 交换前:形参a=3,b=5 交换后:形参a=5,b=3 调用后:实参a=3,b=5 交换失败