静态和非静态全局变量之间的区别

发布于 科技 2024-02-26
11个回答
  1. 匿名用户2024-01-26

    1.静态全局变量:静态外部变量或静态全局变量。

    2.非静态全局变量:外部变量或全局变量。

  2. 匿名用户2024-01-25

    如上一节所述,一个 C 程序可以由多个源文件组成。 全局变量在一个文件中定义,全局变量可以在其他文件中以 extern 模式声明。 如果希望当前文件中的全局变量不被其他文件使用,可以在全局变量的定义中添加关键字static,使全局变量为静态全局变量。

  3. 匿名用户2024-01-24

    全局变量一般不使用静态前缀,因为全局始终是静态的,单位在静态区域分配;

    在子程序中,静态变量是静态的,单位在静态区域分配,单位在堆栈中分配,如果它们不是静态的;

    全局变量是静态的,可以在程序中访问;

    静态局部变量只能在其所在的子程序中访问,静态局部变量再次运行时可以再次访问;

  4. 匿名用户2024-01-23

    首先,状态不同;

    全局静态变量。

    使变量成为定义它的源文件。

    在这种情况下,全局静态变量对构成程序的其他源文件无效。 带有外部链接的静态可以在所有源文件中调用,除了这个,其他文件都可以由 extern 引用。

    二、段落核心含义不同:

    全局变量。 它是一个没有显式用静态修饰的全局变量,但全局变量是静默动态的,作用域是整个项目,全局变量在一个文件中定义,全局变量可以通过声明外部全局变量名称在另一个文件中使用。 全局静态变量是用静态显式修饰的全局变量,作用域是声明该变量的文件,其他文件即使使用 extern 声明也无法使用。

    静态变量也可用于存储常量。

    具体来说,静态变量(全局变量和汇编语言。

    可以使用 const、constant 或 final(取决于语言)等关键字进行标识,在这种情况下,该值在编译时设置,不能在运行时更改。 编译器。

    通常为静态常量。

    与文本一起放置在目标文件的文本区域,非必要的初始化数据放在数据区域中; 如果需要,一些编译器还可以选择专门用于它; 为了防止常量变量被不正确的指针写入覆盖,还可以在此区域启用内存保护。

    以上内容请参考:百科全书 - 静态变量。

  5. 匿名用户2024-01-22

    全局变量是没有显式修饰静态的全局变量,但全局变量默认是动态的,作用域是整个项目,一个文件中定义的全局变量可以通过声明外部全局变量名称在另一个文件中使用。 全局静态变量是使用 static 显式修改的全局变量,作用域是声明此变量的文件。

  6. 匿名用户2024-01-21

    在 C 语言中,关键字 static 有三个不同的功能:

    1).在函数的主体中,声明为 static 的变量在调用函数期间仅初始化一次。

    2).在模块内(但在函数外部),声明为静态的变量可以由模块中使用的函数访问,但不能由模块外部的其他函数访问。 它是一个局部全局变量。

    3).在模块中,声明为静态的函数只能由模块中的其他函数调用。 也就是说,此函数仅限于声明它的模块的本地范围。

  7. 匿名用户2024-01-20

    通俗地说:

    如果局部变量是静态的,则表示该变量的值是该函数运行后运行的下一个函数的初始值。

    函数包括全局变量,如果添加了 static,则其作用域仅在此模块中可用。

  8. 匿名用户2024-01-19

    有静态变量和函数,只能通过这个文件访问,其他文件加上 extern 也是徒劳的。

  9. 匿名用户2024-01-18

    外部变量和静态变量都从静态存储区域分配内存,即它们以相同的方式存储。

    从静态存储中分配内存的特点是,内存是在程序编译时分配的,并且该内存在程序的持续时间内存在,这导致整个程序的全局变量和静态变量的生命周期(即从程序的开始到程序的结束)。

    静态变量有两种类型:

    第一:静态局部变量。

    在函数主体中定义 int i; 和静态 int i; 区别。

    首先,它们都只在定义变量的函数中有效。

    第一个属于非静态局部变量,它从堆栈内存中分配空间,其特点是从函数执行开始就为 i 分配堆栈内存,函数运行结束后,i 分配的内存会被系统自动**(即经过此处理后 i 的值会消失), 所以他的一生只存在于函数的运行中。此外,如果不初始化变量,i 将指向任意值。

    第二个属于静态局部变量,如果i没有被初始化,系统会自动初始化为0,函数运行结束后,i仍然存在,即i的值不会消失(因为分配给他的内存没有恢复),例如:i被系统自动初始化为0, 第一次调用函数,I的初始值为0,函数中执行语句后,I变为5,函数结束,第二次调用函数,I的初始值为5,再执行其他语句后,函数结束,以此类推。换句话说,此调用结束后 i 的值是下一次调用 i 的初始值。

    第二种类型:静态全局变量。

    它与非静态全局变量的区别在于作用域不同。

    源程序由多个源文件组成,非静态全局变量在每个源文件中都有效,而静态全局变量限制其范围,即它们仅在定义变量的源文件中有效,不能在其他源文件中使用。 其他一切都是一样的。

    以上主要是让房东了解关键词静态的作用。

  10. 匿名用户2024-01-17

    全局变量可以由所有函数使用,而静态局部变量只能在函数的局部上下文中使用,尽管它们与全局变量具有相同的生命周期。

  11. 匿名用户2024-01-16

    #include

    int gint1,gint2;全局变量 int fun1()。

    int fun2()

    void main()

    第一次输出:gint1=10,gint2=10 第二次:gint1=20,gint2=10 在函数定义变量中,如果用静态修改,则每次执行函数时,变量不会在开始时初始化,而是保留前几次的值。

    全局变量在整个程序中使用,在程序完成之前不会关闭,而局部变量:当函数结束时,静态变量将保留,但不能在函数的其他位置引用。

相关回答
4个回答2024-02-26

函数是否被外部引用不是一成不变的,两者之间没有必然的相关性。 此外,如果某个函数被指定为静态函数,则应在头文件中将其声明为静态函数,否则其他人在使用库时会误用它。