重楼C++逆向五期

ghfjhk · · 111 次点击 · · 开始浏览    

重楼C++逆向五期

 

获课♥》789it.top/3675/

获取ZY↑↑方打开链接↑↑

C全局变量和局部变量的原理

在 C 语言中,变量可以分为全局变量局部变量,它们的作用范围、生命周期和存储位置各不相同。下面是它们的基本原理:

1. 全局变量 (Global Variable)

定义与作用范围

  • 定义:全局变量是在所有函数外部定义的变量。它在整个程序中都是可见的。

  • 作用范围:全局变量可以在整个文件内、甚至在多个文件中使用(通过extern声明)。它的作用范围包括了整个程序的执行过程。

存储位置

  • 内存存储:全局变量存储在数据段(Data Segment)中。数据段分为已初始化和未初始化的两个区域,已初始化的全局变量存储在初始化数据段,未初始化的全局变量存储在 BSS 段(Block Started by Symbol)中。

生命周期

  • 生命周期:全局变量从程序开始执行直到程序结束都存在。它们的值在程序整个运行期间保持不变,除非被修改。

在上面的例子中,global_var 是一个全局变量,可以在 printGlobal 函数和 main 函数中访问。

2. 局部变量 (Local Variable)

定义与作用范围

  • 定义:局部变量是在函数或块内(例如 iffor 语句块内)定义的变量。

  • 作用范围:局部变量仅在其定义的函数或块内有效,其他地方无法访问。

存储位置

  • 内存存储:局部变量存储在**栈(Stack)**中。当函数或块被调用时,局部变量会被创建;当函数或块执行完毕时,局部变量会被销毁。

生命周期

  • 生命周期:局部变量的生命周期在函数或代码块的执行期间。当函数执行结束时,局部变量会被销毁,且其存储空间被回收。

在上面的例子中,local_var 是一个局部变量,只能在 exampleFunction 内使用,不能在 main 函数中访问。

3. 全局变量与局部变量的区别

4. 注意事项

  • 命名冲突:如果全局变量和局部变量的名字相同,局部变量会隐藏全局变量,即在局部作用域内,局部变量优先于全局变量。

  • 内存管理:全局变量占用内存较长时间,而局部变量则在函数执行时创建和销毁,所以局部变量的内存管理更加高效。

5. extern 关键字

  • 如果你想在多个文件中使用全局变量,可以使用 extern 关键字在其他文件中声明这个变量。

file2.c 中,使用 extern 声明了全局变量 global_var,表示它在其他地方定义,程序链接时会查找 file1.c 中的定义。

总结

  • 全局变量:在整个程序中可见,生命周期贯穿整个程序的运行,存储在数据段。

  • 局部变量:仅在其所在函数或代码块内有效,生命周期短,存储在栈中。

希望这个解释能帮你理解 C 语言中全局变量和局部变量的原理!如果还有其他问题,随时问我!

111 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传