c语言编程笔录

首页 >   > 笔记大全

笔记大全

全局变量上电时是如何赋值的

更新时间:2023-06-17

背景介绍

在程序设计中,为了简化代码和提高执行效率,我们经常会使用全局变量。全局变量是指定义在程序文件外部或函数外部的变量,对整个程序都是可见和可访问的。

全局变量赋值规则

全局变量的赋值规则是由编译器实现的。在同一个文件中定义的全局变量,编译器会为其分配内存空间,并在程序启动时对其进行初始化赋值。所以在程序运行时,全局变量已经被赋以初值。

但是,在不同的文件中定义并声明的全局变量会引发重复定义的问题,编译器会报错并停止程序的编译。解决办法是将全局变量的定义放在一个单独的源文件中,并将源文件编译成可重定位目标文件。然后,将这些目标文件链接起来,形成执行文件。

上电时全局变量赋值流程

在程序上电时,全局变量的赋值流程如下:

  1. 检查存储器的初始状态,确定全局变量所在的内存地址。
  2. 按照变量类型和初值的规则,向全局变量的内存地址写入初值。
  3. 将程序计数器置零,开始执行程序。
  4. 程序读取全局变量的值,并执行相应的操作。
// 以下是一个简单的示例程序:
#include 

// 在不同的源文件中定义和声明全局变量
int a = 1;  // 全局变量定义
extern int b;  // 全局变量声明

int main()
{
  // 对全局变量进行读取和修改
  a = a + b;
  printf("a = %d, b = %d\n", a, b);
  return 0;
}

// 另一个源文件定义全局变量
int b = 2;

在上述程序中,全局变量a和b分别在不同的源文件中定义和声明。在程序启动时,编译器会为它们分配内存空间并赋初值。在main函数中,对全局变量a和b进行读取和修改,并输出结果。