1.C static全局变量与普通全局变量的区别;static局部变量与普通局部变量的区别;static全局函数与普通全局函数的区别;

  • Post author:
  • Post category:其他


菜鸟在线C编译器:1)或2)



1. http://www.compileonline.com/compile_c_online.php



2.


http://www.runoob.com/try/runcode.php?filename=helloworld&type=c

摘要:

1.static全局变量只初使化一次,防止在其他文件单元中被引用;

2.static局部变量只被初始化一次,下一次依据上一次结果值;

3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

一、static全局变量与普通的全局变量

1):相同

1.静态全局变量,全局变量  都以【静态存储方式】

2.静态全局变量,全局变量  不在任何{}之内

2)作用域不同:


1.static全局变量:表示该变量是内部连接:

1.1    就是说在其它的.cpp文件中,该变量是不可见的(你不能用).

2.普通全局变量:表示该变量是外部链接

2.1 在所有的.cpp文件中(源程序),可用-只需要声明下即可;

3)初始化:

1.static全局变量只初使化一次,防止在其他文件单元中被引用;

2.普通全局变量,可以在多个文件声明,但是赋值只能在一个文件(别的文件进行声明,就可以使用了);

二、static局部变量和普通局部变量有什么区别:

static局部变量只被初始化一次,下一次依据上一次结果值;

(一~二)补充:初始化局部变量和全局变量

当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化,如下所示:

数据类型 初始化默认值
int 0
char ‘\0’
float 0
double 0
pointer NULL

三、static函数与普通函数

作用域不同

1.static函数仅在本文件中使用:

表示该函数是内部连接,之在本文件中有效,别的文件中不能应用该函数.

2.不加static的函数默认为是全局的:

也就是说在其他的.cpp中只要申明一下这个函数,就可以使用它.

2.建议:

2.1.只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。

2.2.对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

四、如何引用一个已经定义过的全局变量

方式一:extern

如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

方式二:可以用引用头文件的方式

如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间 会报错

五、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?


可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值(别的文件,声明下既可使用,不能再次赋值),此时连接不会出错。



版权声明:本文为a2241076850原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。