黑马程序员技术交流社区
标题:
关于static这到底是怎么回事?求大神解释
[打印本页]
作者:
洪吉童
时间:
2015-10-5 09:03
标题:
关于static这到底是怎么回事?求大神解释
本帖最后由 洪吉童 于 2015-10-5 09:07 编辑
1、我在test.c中定义了static全局变量count
/********test.c***********/
#include"stdio.h"
#include"test.h"
static int count=5;
void test()
{
printf("count=%d",count);
}
复制代码
/*******main.c************/
#include"stdio.h"
#include "stdlib.h"
#include"test.h"
int count=6;
void main(){
printf("count=%d\n",count); //打印count值
test();
system("pause"); //DOS窗口停留
}
复制代码
为什么打印结果是count=5
count=5
既然是static变量不是只能在本文件中使用吗?怎么在main.c中也能用了?
2、如果我在test.c中不用static修饰count
/********test.c***********/
#include"stdio.h"
#include"test.h"
int count=5;
void test()
{
printf("count=%d",count);
}
复制代码
在main.c中也不修饰全局的变量count
/*******main.c************/
#include"stdio.h"
#include "stdlib.h"
#include"test.h"
int count=6;
void main(){
printf("count=%d\n",count); //打印count值
test();
复制代码
打印结果仍然是:count=5 count=5
不是应该报错有两个同名的变量吗?既然用不用static都一样,那它起什么作用?
PS:编译平台VC6.0
作者:
洪吉童
时间:
2015-10-5 09:12
再说明一下,我在test.h文件的代码没有声明变量,只声明了函数,因为声明变量会显示错误,重定义
/********test.h***********/
#include"stdio.h"
void test();
复制代码
作者:
HI奋斗
时间:
2015-10-5 09:49
努力,让自己更加强大!
作者:
wjy0916
时间:
2015-10-5 10:18
纯属个人想法,没有理论依据,楼主如果有准确的答案,记得要发一下哟!!!!!!应该是引用了test.h的问题,可能引用了test.h后,你在test.c中定义的count 可能 会 把main.c的count暂时屏蔽,因为你没在.h中声明变量,所以不会出现重名变量。
作者:
羊口羊口羊
时间:
2015-10-5 21:26
我在Xcode试了第一种方法,打印出来第一个是6,第二个是5。可能是所用软件版本的问题
作者:
洪吉童
时间:
2015-10-5 22:19
羊口羊口羊 发表于 2015-10-5 21:26
我在Xcode试了第一种方法,打印出来第一个是6,第二个是5。可能是所用软件版本的问题 ...
对应该是,编译平台不一样
作者:
LPz1994
时间:
2015-10-6 15:12
................
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2