网站建设怎么链接表格,网站与微信对接,网站托管 济南,东莞服饰网站建设哪家好目录
1、#xff08;作用#xff09;域的概念
2、全局与局部的相对性
3、生命周期
3、静态变量static
结语#xff1a; 前言#xff1a; 在c语言中#xff0c;全局变量的可见范围是整个工程#xff0c;而局部变量的可见范围从该变量被定义到该作用域结束#xff0c…目录
1、作用域的概念
2、全局与局部的相对性
3、生命周期
3、静态变量static
结语 前言 在c语言中全局变量的可见范围是整个工程而局部变量的可见范围从该变量被定义到该作用域结束在一个变量的可见范围外是调用不了该变量的换句话说在一个变量的可见范围内不能定义一个和该变量同名的变量而在该变量的可见范围外可以定义一个与该变量名字一样的变量。 全局变量的生命周期是整个程序的生命周期而局部变量的生命周期是从该变量在他的作用域中被定义开始直到出了该作用域就结束结束意味着该局部变量以及他的值会被系统销毁。
1、作用域的概念 首先再了解全局变量和局部变量前最重要的是了解什么是作用域通常用一对大括号”{}“括起来的区域就是一个作用域而在该作用域创建的变量为局部变量重要的是作用域与作用域之间是互不干扰的是相对独立的两块区域。 比如最常见的main函数就是用一个大括号括起来的
#includestdio.hint main()
{//左大括号//main函数的作用域//...int a 12;//a为局部变量return 0;
}//右大括号 不仅仅只有函数是用大括号进行规划的if语句和while循环、fot循环等等都是用大括号”{}“进行规划作用域的因此在这些大括号中创建的变量也可以称为局部变量且相互独立。 例子如下
#includestdio.hint main()
{int a 12;if (1){int a 20;}for (int a 1; a 0; a--){}while (a--){int a 100;}printf(hello world);return 0;
} 以上代码虽然在同一个main函数内定义了4个a变量但是是在不同的作用域中都有的因此最后可以正常打印出了hello world说明该程序没有问题。 函数区分作用域的例子如下
#includestdio.hvoid func()
{int a 20;
}int main()
{int a 12;func();printf(hello world);return 0;
} 最后依旧能够打印出hello world表示该程序没有问题。
2、全局与局部的相对性 全局变量和局部变量是具有相对性的比如一个局部变量a他相对于他作用域外是局部的但是他相对于他的作用域里面的某个作用域是全局的。 示例代码如下
#includestdio.hint main()
{int a 12;//相对于if语句里的作用域该a是全局变量if (1){printf(%d , a);//可以打印出a的值}return 0;
} 运行结果 若一个作用域和该域之外的作用域都有一个同名变量a若想在该作用域中打印该变量的值则打印的是局部变量的值遵循局部优先的法则。 示例代码如下
#includestdio.hint a 1020;//全局变量int main()
{printf(%d\n, a);//由于局部变量的可见范围是在其创建时才开始因此这里打印的是1020int a 12;//局部优先printf(%d\n, a);if (1){printf(%d\n, a);//由于局部变量的可见范围是在其创建时才开始因此这里打印的是12int a 20;//局部优先printf(%d\n, a);}return 0;
} 运行结果 3、生命周期 一个变量出了其作用域就会被销毁表示其生命周期结束了生命周期通常是用函数中的局部变量来做解释因为一个函数被调用完成后会被销毁其函数中的局部变量也就跟着销毁了。 示例代码如下
#includestdio.hvoid func()
{int a 2;//出了函数变量a就被销毁
}int main()
{func();printf(%d , a);//此处会找不到变量aif (1){int a 12;//出了作用域也可以理解为变量a被销毁}printf(%d , a);//此处也会找不到变量areturn 0;
}
3、静态变量static static的作用是延长局部变量的生命周期但是不会延长其可见范围也就是某个作用域中的变量加了static后下一次来到该作用域时该变量不会再次被初始化而是接着用之前的值但是在该变量作用域外的作用域依然无法调用他。 示例代码如下
#includestdio.hvoid func()
{static int a 2;//只会初始化一次a后续就跳过初始化的步骤a;printf(%d , a);
}int main()
{func();func();func();//printf(%d , a);//此处依然找不到areturn 0;
} 运行结果 没加static的运行结果 从结果可以看到如果没有加static那么局部变量a在调用完函数func后就跟着销毁了则下一次调用函数func时a又会重新初始化。如果加了statica只会初始化一次并且不会跟着函数一起销毁后续调用函数func时a会保留之前的值进入该函数。
结语 全局变量和局部变量作为c语言中的基础其虽然看起来不起眼但是对今后的学习都是非常重要的一环知识最后希望本文可以给你带来更多的收获如果本文对你起到了帮助希望可以动动小指头帮忙点赞关注收藏如果有遗漏或者有误的地方欢迎大家在评论区补充~谢谢大家︶↗