当前位置:首页 » 编程语言 » c语言字符全局
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符全局

发布时间: 2022-06-23 13:27:31

⑴ C语言中的全局变量和局部变量分别是指什么

解答问题前,先说明一下,当全局变量和局部变量同名时,要看当前代码所处的作用域,默认使用当前作用域内的同名局部变量。
分析你所提供的代码:
#include
int a = 4;
//全局变量
int f(int n)
{
int t = 0;
static int a = 5;
//局部静态变量
if( n%2 )
{
int a = 6;
// if作用域内局部变量
t += a++;
// 此处的a是指if作用域内的局部变量,该变量在作用
// 域结束后,生存周期结束。
}
else
{
int a = 7; // else作用域内局部变量
t += a++;
// 此处的a是指else作用域内的局部变量
// 作用域结束后,生存周期结束
}
return t+a++;
// 此外的a是指f函数作用域内的静态局部变量,
// 每次f函数调用return后,此静态局部变量a自增1
}
int main ( void )
{
int s=a, i=0;
// 根据作用域,此处的a是指全局变量,所以s初始值为4
for(;i<2;i++) s+=f(i);
printf("%d\n",s);
return 0;
}根据以上,分析运行流程:
由上可知,s初始值为4;
当i=0时,第一次循环,调用f()函数,由于0%2为0,会进入else后代码,此时t=0+7=7,调用f()函数的return时,会返回7+5=12,同时f()函数的静态局部变量a由5变为6(下次调用生效),s=4+12=16。
当i=1时,第二次循环,调用f()函数,由于1%2为1,会进入if后代码,此时t=0+6=6,调用f()函数的return时,会返回6+6=12,同时f()函数的静态局部变量a由6变为7(下次调用生效),s=16+12=28。
当i=2时,循环终止,打印s值为28。
关于最后的问题,是因为f()函数中if后面的变量a作用域只限制在if后的花括号内,代码退出该作用域后,该变量生存周期结束而被释放,return中使用的a是f()函数中定义的静态局部变量a,所以,不管前者如何赋值,对return中的a没有影响。

⑵ C语言中的全局变量和局部变量

局部变量是在某一函数内定义的变量,有效区域在本函数里。
全局变量定义在函数外,全局起作用。