值能任意修改为任意值吗

全局变量是静态分配的,它们可以被程序中任何函数修改。
没错,全局变量,也叫外部变量,是在函数外部定义的。
它们不属于任何特定函数,而是属于整个源代码文件。
这些变量的作用范围从它们被定义的位置开始,一直到源文件的末尾。
全局变量定义在所有函数之外,因此程序中的任何部分(甚至其他文件中的代码)都可以访问它们。
全局变量的生命周期贯穿整个程序的运行,不受作用域的限制。

要是想在一个文件中使用另一个文件中定义的全局变量,可以在该文件中使用extern关键字来声明。
这样做之后,该文件就能访问这个变量了。
如果你给全局变量前面加个static修饰符,这个变量就变成了局部于当前源文件的,这被称为全局静态变量,也就是静态全局变量。
在由多个文件组成的程序中,全局变量和全局静态变量是有区别的。
任何在特定作用域内声明的变量,其作用域在该层次结束时终止。
唯一的不同之处在于,全局静态变量只对定义它的源文件可见。

如果一个文件尝试使用extern关键字来声明另一个文件中定义的静态全局变量,这个文件将无法访问这个变量。

什么叫外部变量内部变量(什么叫变量和不变量)

全局变量,即外部变量,系指在函数之外定义的变量,其作用范围覆盖从定义点至程序文件末尾。
在此范围内,全局变量可供所有函数访问。
编译过程中,这些变量被存储于静态存储区。
若需在其他文件中引用外部变量,可通过extern关键字进行声明以拓宽其作用域。
此外,使用static关键字可限制外部变量的可见性,防止其在非相关文件中被访问。
而在C语言中,函数体内的变量被称为内部变量,亦即局部变量。

全局变量和 局部变量的区别?

在编程中,变量的作用域是区分局部变量与全局变量的关键点。
所谓局部变量,特指那些在函数内部声明的变量,其生命周期和可见性仅限于该函数。
与之相对,全局变量是在函数外部定义的,从其声明位置开始直至源文件末尾,都具有有效的生命周期。

关于main函数中的变量声明,如果存在同名的外部变量,那么main函数中的这个变量实际上被视为全局变量。
如果没有外部同名变量,那么main函数中的变量则属于局部变量范畴。

使用全局变量的主要目的在于加强不同函数间的数据交互。
由于同一个文件中的所有函数都可以访问全局变量的值,因此,当某个函数修改了全局变量的值时,这种改变会即时反映到其他函数中,仿佛它们之间存在着直接的通信渠道。

在现代面向对象的编程语言,如Java、C++、C和Ruby中,全局变量的概念已基本不再使用。
这些语言中,变量通常被封装在类内,对其他类不可见。
尽管如此,如果确实需要实现全局变量的功能,可以通过将类设置为public static,并将类成员变量也定义为public static的方式,来确保该变量在内存中占用一个固定且唯一的区域,从而模拟全局变量的行为。