网站视觉设计方案信息网络系统
网站视觉设计方案,信息网络系统,2022最近十大的新闻热点,深圳做网站980目录 一、生命周期和作用域1、生命周期2、作用域 二、static 的影响1、static的作用2、static 修饰局部变量 三、extern 的魔力四、static 与 extern 的协同与冲突1、static修饰全局变量2、static修饰函数 在 C 语言的世界里#xff0c; static 和 extern 这两个关键字在函数的… 目录 一、生命周期和作用域1、生命周期2、作用域 二、static 的影响1、static的作用2、static 修饰局部变量 三、extern 的魔力四、static 与 extern 的协同与冲突1、static修饰全局变量2、static修饰函数 在 C 语言的世界里 static 和 extern 这两个关键字在函数的运用中有着至关重要的地位和深远的影响。它们犹如两把神奇的钥匙为我们打开了理解函数特性和作用域的大门。
一、生命周期和作用域
在讲解static和extern之前我们需要了解一下作用域和⽣命周期。
1、生命周期
指的是变量在程序运行过程中存在的时间范围。
全局变量的生命周期是整个程序的运行期间从程序开始执行到程序结束。局部变量的生命周期是在其所在的函数或代码块被执行期间当函数或代码块执行结束局部变量就被销毁。
2、作用域
是指变量在程序中可以被访问的范围。
全局作用域全局变量具有全局作用域可以被程序中的任何函数访问。局部作用域局部变量通常只在其所在的函数或代码块内可见和可访问出了这个范围就无法再直接使用。
二、static 的影响
1、static的作用 当我们在函数内部使用 static 修饰变量时就开启了一段独特的旅程。 首先 static 变量具有静态存储期。这意味着它在程序的整个运行期间都存在而不像普通的自动变量在函数调用结束后就消失。这种持久性使得 static 变量能够在函数的多次调用之间保持其值。例如
void increment()
{static int count 0;count;printf(当前计数: %d\n, count);
}每次调用 increment 函数 count 的值都会在上一次的基础上递增。其次 static 变量的作用域被限制在声明它的函数内。这确保了变量的封装性和局部性不会被其他不相关的函数意外访问或修改。2、static 修饰局部变量 代码1和代码2的效果做下对比我们就能理解static修饰局部变量的意义所在了 1、代码1的test函数中的局部变量i是每次进⼊test函数先创建变量⽣命周期开始并赋值为0然后 再打印出函数的时候变量⽣命周期将要结束释放内存。 2、代码2中我们从输出结果来看i的值有累加的效果其实test函数中的i创建好后出函数的时候是 不会销毁的重新进⼊函数也就不会重新创建变量直接上次累积的数值继续计算。结论static修饰局部变量改变了变量的⽣命周期⽣命周期改变的本质是改变了变量的存储类型本来⼀个局部变量是存储在内存的栈区的但是被static修饰后存储到了静态区。存储在静态区的变量和全局变量是⼀样的⽣命周期就和程序的⽣命周期⼀样了只有程序结束变量才销毁内存才回收。但是作⽤域不变的。
三、extern 的魔力 extern 则为我们展现了函数之间共享信息的奇妙方式。 通过使用 extern 关键字来声明一个全局变量我们可以在多个函数中访问和操作这个变量。它打破了函数之间的壁垒实现了数据在程序不同部分之间的流通。比如
extern int globalVariable;void function1() {// 使用 globalVariable
}void function2() {// 也使用 globalVariable
}在这里 globalVariable 可以在多个函数中被共同使用促进了程序的整体性和协调性。然而使用 extern 也需要谨慎。如果不小心管理可能会导致变量被意外修改引发难以察觉的错误和混乱。四、static 与 extern 的协同与冲突 在某些情况下 static 和 extern 可以协同工作共同构建出复杂而精巧的程序结构。比如一个模块中的函数可以通过 extern 共享全局的静态变量实现特定的功能交互。 但同时它们也可能产生冲突。如果在不同的文件中对同一个变量既使用了 static 又使用了 extern 可能会导致链接错误或意外的行为。
1、static修饰全局变量 extern 是⽤来声明外部符号的如果⼀个全局的符号在A⽂件中定义的在B⽂件中想使⽤就可以使⽤extern进⾏声明然后使⽤。但运行时代码1正常代码2在编译的时候会出现连接性错误。那是因为⼀个全局变量被static修饰使得这个全局变量只能在本源⽂件内使⽤不能在其他源⽂件内使⽤。本质原因是全局变量默认是具有外部链接属性的在外部的⽂件中想使⽤只要适当的声明就可以使⽤但是全局变量被static修饰之后外部链接属性就变成了内部链接属性只能在⾃⼰所在的源⽂件内部使⽤了其他源⽂件即使声明了也是⽆法正常使⽤的。所以如果⼀个全局变量只想在所在的源⽂件内部使⽤不想被其他⽂件发现就可以使⽤ static修饰。
2、static修饰函数 代码1可以正常运行代码2运行时出现异常。 其实static 修饰函数和static修饰全局变量是⼀样的⼀个函数在整个⼯程都可以使⽤被static修饰后只能在本⽂件内部使⽤其他⽂件⽆法正常的链接使⽤了。 在实际编程中我们需要根据具体的需求和场景合理地运用 static 和 extern 。要充分考虑到变量的生命周期、作用域和可维护性等因素。正确地使用它们可以让我们的代码更加简洁、高效和可靠而错误地使用则可能引发一系列难以调试的问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90327.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!