A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 洪吉童 于 2015-10-5 09:07 编辑

1、我在test.c中定义了static全局变量count
  1. /********test.c***********/
  2. #include"stdio.h"
  3. #include"test.h"
  4. static int count=5;
  5. void test()
  6. {
  7.         printf("count=%d",count);
  8. }
复制代码

  1. /*******main.c************/
  2. #include"stdio.h"
  3. #include "stdlib.h"
  4. #include"test.h"
  5. int count=6;
  6. void main(){
  7.      
  8.      printf("count=%d\n",count);  //打印count值
  9.          test();
  10.     system("pause");              //DOS窗口停留  
  11. }
复制代码
为什么打印结果是count=5
                             count=5
既然是static变量不是只能在本文件中使用吗?怎么在main.c中也能用了?




2、如果我在test.c中不用static修饰count
  1. /********test.c***********/
  2. #include"stdio.h"
  3. #include"test.h"
  4. int count=5;
  5. void test()
  6. {
  7.         printf("count=%d",count);
  8. }
复制代码



在main.c中也不修饰全局的变量count
  1. /*******main.c************/
  2. #include"stdio.h"
  3. #include "stdlib.h"
  4. #include"test.h"
  5. int count=6;
  6. void main(){

  7. printf("count=%d\n",count); //打印count值
  8. test();
复制代码

打印结果仍然是:count=5                             count=5
不是应该报错有两个同名的变量吗?既然用不用static都一样,那它起什么作用?
PS:编译平台VC6.0






6 个回复

倒序浏览
再说明一下,我在test.h文件的代码没有声明变量,只声明了函数,因为声明变量会显示错误,重定义
  1. /********test.h***********/
  2. #include"stdio.h"
  3. void test();
复制代码


回复 使用道具 举报

努力,让自己更加强大!
回复 使用道具 举报
纯属个人想法,没有理论依据,楼主如果有准确的答案,记得要发一下哟!!!!!!应该是引用了test.h的问题,可能引用了test.h后,你在test.c中定义的count    可能  会 把main.c的count暂时屏蔽,因为你没在.h中声明变量,所以不会出现重名变量。
回复 使用道具 举报
我在Xcode试了第一种方法,打印出来第一个是6,第二个是5。可能是所用软件版本的问题
回复 使用道具 举报
羊口羊口羊 发表于 2015-10-5 21:26
我在Xcode试了第一种方法,打印出来第一个是6,第二个是5。可能是所用软件版本的问题 ...

对应该是,编译平台不一样
回复 使用道具 举报
................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马