前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,i是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件static_main.c是可见的。如果加了static,就会对其它源文件隐藏。例如在i和msg的定义前加上static,static_main.c就看不到它们了。利用这一特性可以...
1)全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。 2.3...
1)全局变量是不显式用 static 修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过 extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用 static 修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用 extern 声明也不能...
解析:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
static变量 static变量:在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量(无论是否在函数体内都是如此)。 static全局变量:相当于全局变量,但只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它,而extern全局变量可以。
1>static局部变量:静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失, 下一次依据上一次结果值。 2>普通局部变量:局部变量在定义它的函数内有效,但是函数返回后失效。 3>static全局变量:静态全局变量只在定义它的文件内有效。
b、全局静态变量 (static):分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用, 全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用它。(也就是其他文件也可以用同样名字的静态变量) ...
static 局部变量:改变存储位置,不改变作用范围 静态函数 :在函数的返回类型前加上static 关键字,函数即被定义为静态函数。静态函数与普通函数不同, 它只能在声明它的文件当中可见,不能被其它文件使用。 如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中 ...
static关键字在全局变量中的含义: 当static关键字用于修饰全局变量时,它限制了该变量的链接属性。通常,全局变量具有外部链接,这意味着它们可以在整个程序(包括多个源文件)中被访问。但是,当全局变量被static修饰后,其链接属性变为内部链接,即该变量只能在定义它的源文件内部被访问,而在其他源文件中则不可见。