• 2940阅读
  • 1回复

Question1.10:Do all declarations for the same static function or variable have to inlcude...? [复制链接]

上一主题 下一主题
离线那个谁
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-07-13
— 本帖被 tyrone2497谁 执行加亮操作(2013-07-19) —

Q: Do all declarations for the same static function or variable have to include the storage class static?
A: The language in the Standard does not quite require this (what's most important is that the first declaration contain static), but the rules are rather intricate, and are slightly different for functions than for data objects. (There has also been a lot of historical variation in this area.) Therefore,
it's safest if static appears consistently in the definition and all declarations.
离线那个谁

只看该作者 沙发  发表于: 2013-07-13
问题:同样的静态函数或者变量的声明都必须包含存储类别static吗?
回答:语言标准并没有必须要求这一点(最重要的是第一次声明必须包含static),但是规则对于函数却是比数据对象要复杂些。(在该区域里,也有很多历史方面的变化)因此,最为保险的方式就是让static一致地出现在定义和声明之中。
(注意:局部变量的静态变量只初始化一次,并且运算结果可以长期保留。)例子:
             f()
             {
                      static c=3;
                       c++;
                       return(c);
             }
          main()
         {

               int a=2,i;
               for(i=0;i<3;i++)
                       printf("%d",f());
           }

虽然在每一次我们进入函数f()的时候都有c=3,但是由于其为静态变量,只初始化一次,所以第二次进来的时候的值为上一次运算后保留的值4,所以这里最后的打印值为4,5,6。
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个