3. 对全局变量、局部变量和静态局部变量作用域的分析应用。分析并写出下列程序的执行结果,然后输入计算机执行,比较分析结果与执行结果。 #include<iostream> using namespace std; int a = 300, b = 400, c = 500; void funa( int c){ static int a = 5; a+=c; cout<<a<<' ' <<c<<'\n'; } void funb(int a){ a= b; cout<<a<<'\n'; } void func(){ int c=0; cout<<a<<' '<<b<<' '<<c<<'\n'; ::c-=100; } int main(){ funa(a); funb(b); funa(b); func(); cout<<a<<' '<<b<<' '<<c<<'\n'; return 0; }
时间: 2024-02-26 18:56:12 浏览: 13
这段程序的执行结果为:
305 300
400
705 400
300 400 0
505 400 400
首先,在全局作用域下定义了三个整型变量a、b、c,分别初始化为300、400、500。然后定义了三个函数funa、funb、func。
函数funa中定义了静态局部变量a,并将其初始化为5。在函数调用时,传入参数c,将静态局部变量a加上参数c,然后输出静态局部变量a和参数c的值。因此,第一次调用funa时,静态局部变量a为5,参数c为全局变量a的值300,输出305 300。第二次调用funa时,静态局部变量a已经变为305,参数c为全局变量b的值400,输出705 400。
函数funb中定义了一个参数a,并将其赋值为全局变量b的值,然后输出参数a的值。因此,在调用funb时,输出400。
函数func中定义了一个局部变量c,并将其初始化为0。然后输出全局变量a、b和局部变量c的值,接着将全局变量c减去100。因此,在调用func时,输出300 400 0。
在主函数main中,先调用funa(a),输出305 300。然后调用funb(b),输出400。接着调用funa(b),输出705 400。最后调用func(),输出300 400 0,然后输出全局变量a、b、c的值,即505 400 400。
分析结果与执行结果完全一致。
相关问题
全局变量,静态变量,局部变量,静态局部变量的生命周期和作用域
全局变量是在程序的任何地方都可以访问的变量,它的生命周期从程序开始执行到程序结束。全局变量的作用域是整个程序。
静态变量是在函数内部定义的变量,但是它的生命周期不随函数的调用而结束,而是在整个程序执行期间保持不变。静态变量的作用域是定义它的函数内部。
局部变量是在函数内部定义的变量,它的生命周期从函数被调用开始到函数执行结束。局部变量的作用域是定义它的函数内部。
静态局部变量是在函数内部定义的静态变量,它的生命周期和作用域与静态变量相同。静态局部变量只会在第一次调用函数时被初始化,之后每次调用函数时都会保持上一次调用的值。
范例:<<引用:全局变量的生命周期和作用域是指全局变量在程序中存在的时间和可访问的范围。全局变量的生命周期从程序开始执行到程序结束,而全局变量的作用域是整个程序。静态变量的生命周期和作用域与全局变量相似,但是它们是在函数内部定义的。局部变量的生命周期从函数被调用开始到函数执行结束,而局部变量的作用域是定义它的函数内部。静态局部变量是在函数内部定义的静态变量,它的生命周期和作用域与静态变量相同。静态局部变量只会在第一次调用函数时被初始化,之后每次调用函数时都会保持上一次调用的值。>>
3.简述局部变量和全局变量的区别。
局部变量和全局变量是在程序中定义的两种不同类型的变量。
局部变量是在函数内部声明和初始化的变量。它们的作用域仅限于函数内部,函数执行完毕后它们就会被销毁,并且在其他函数中不能访问到它们。局部变量通常在函数内部使用,可以被多次声明和初始化。
全局变量是在函数外部声明的变量,它们的作用域是整个程序。全局变量可以在任何函数中使用,但如果在函数内修改了全局变量的值,将会影响整个程序的运行。全局变量通常在程序中作为常量或者计数器使用,应该尽可能少的使用它们,因为它们容易被误修改而导致程序的错误。