虚拟主机多网站,网站建设宣传词,英文网站如何建设,seo深度优化服务#x1f334;作用域和生命周期的介绍#x1f334;static修饰局部变量#x1f334;static修饰全部变量#x1f334;static修饰函数 作用域和生命周期的介绍 什么样的变量称为局部变量呢#xff1f; 看图就知道了,这里的b#xff0c;c都为局部变量#xff0c;只有…作用域和生命周期的介绍static修饰局部变量static修饰全部变量static修饰函数 作用域和生命周期的介绍 什么样的变量称为局部变量呢 看图就知道了,这里的bc都为局部变量只有a为全局变量。 作用域 作用域scope是程序设计概念通常来说一段程序代码中所用到的名字并不总是有效/可用的 而限定这个名字的可用性的代码范围就是这个名字的作用域。 总结
局部变量的作用域是变量所在的局部范围。全局变量的作用域是整个工程。
生命周期 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段 我们可以在main函数里试着分别打印ab和c看看会有什么样的结果 可以看到a和c都能打印出结果而b就报错了这就是它们作用域和生命周期不同所带来的结果也是全局变量和局部变量的区别。 总结
局部变量的生命周期是进入作用域生命周期开始出作用域生命周期结束。通俗的讲就是出了作用域就销毁了再进到函数里就会重新创建变量全局变量的生命周期是整个程序的生命周期。 static修饰局部变量 给大家介绍了作用域和生命周期是为了能更好的去理解C语言的关键字-static 接下来就给大家讲解static修饰局部变量的有什么神奇的效果 #includestdio.hvoid txit()
{int b 2 ;b b 1;printf(%d , b);}
int main()
{for (int i 0; i 3; i){txit();}return 0;
}上面程序的结果都是3 3 3 我们给b变量用static修饰一下再运行一下结果将会是什么呢 我们看到这次输出的是3 4 5 这是为什么呢 听慢慢我给你道来因为static修饰的局部变量会改变它的生命周期就是延长了它的生命周期以至于当这个函数调用完了b变量并没有销毁而第一次我们没有static修饰的时候函数调用完了b变量就跟着销毁了重新进去函数的时候再创建所以图一的方式一直都是3而图二就不会跟随着函数调用完就销毁而是保留这个数值。哪什么时候它的销毁呢答案是程序执行完了它就销毁了。 总结 1.static修饰的局部变量生命周期变长 static修饰全部变量 既然static修饰的局部变量是延长生命周期那么static修饰全局变量也是延长生命周期吗 答案是否定的因为全局变量的生命周期已经是随着程序执行完之后就销毁相当于是最长的生命周期了 这里先简单解释一下C语言另外一个关键字“extern”主要是用来声明外部文件的变量假如你创建了两个.c源文件其中一个test_2.c文件有一个变量a你想在另外一个text_1.c文件使用这个变量则需要用到“extern”来声明 我们看到现在这个情况可以正常运行程序的。 这时候我们用static修饰全局变量a看看是什么情况 显然我们看到运行不了编译的时候会出现连接性错误。 为什么呢 因为一个全局变量被static修饰使得这个全局变量只能在本源文件内使用不能在其他源文件内使用。也可以理解为它的生命周期变短了 总结 1.static修饰的全局变量使得这个全局变量只能在本源文件内使用不能在其他源文件内使 用。生命周期缩短了 static修饰函数 知道了static修饰局部和全局变量之后其实static也可以修饰函数同样我们看看没有static修饰的函数情况下是这样的 这里也在两个不同的文件下要用extern来声明函数。 我们看到现在是现在正常运行求和的 接下来我们要用static来修饰函数 显然程序是运行不了的。 因为一个函数被static修饰使得这个函数只能在本源文件内使用不能在其他源文件内使用。 这个情况是跟static修饰全局变量是类似的可以结合理解一下。 总结
一个函数被static修饰使得这个函数只能在本源文件内使用不能在其他源文件内使用。