【牛腩新闻发布系统】——Static的使用

来源:互联网 发布:免费版进销存软件 编辑:程序博客网 时间:2024/04/20 01:13

在敲牛腩的过程中,遇到了个小问题,就是出现如图所示的提示信息:


然后在百度里查了一下,发现写的真的好全,原地址是:http://baike.baidu.com/link?url=SQEFkWbtl5MSqvTjsTEtCCcwtw9XDYn8M3QOjn1qpqnlYGFGBMnIYz0zbPuKaFGM4oxT8aY6Y8RV1s5mq8AEXa

而我提取小部分,能解决现阶段我遇到的问题就行了。


静态全局变量


在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。

它的特点如下:

1、该变量在全局数据区分配内存;

2、未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机

的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);

    3、静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;

    4、静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。


出现问题的原因


定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处:

1、静态全局变量不能被其他文件所用;

2、其他文件中可以定义相同名字的变量,不会发生冲突;

所以即使我已经把SQLHelper实例化一遍了,但是对于存在静态变量来说,SQLHelper的方法是不能被调用
的。第一条解释了为什么会报上述的错误了。

全局变量与全局静态变量区别


1、全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在

一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。

2、全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用

extern声明也不能使用。


总结


开始敲牛腩,才刚开始就遇到了问题,看来接下来的还会有更多问题等着我呢。慢慢来吧……

1 0
原创粉丝点击