C中static学习总结

C中的static的作用,要根据上下文有所不同

1.       如果修饰代码块外的变量或函数,是修改该变量或函数的链接属性,让他们只在当前源文件内可以访问,在其他源文件不可访问,因为默认的情况下,在所有代码块外的变量或函数都是external的,在其他的源文件中都可以访问,加上static的修饰,让他们变成internal的,只在本源文件可用,比如下面的代码,在第3行,第5行加了static修饰符,使他们通过其他文件无法访问:

 

1      #include <stdio.h>

2

3      static  int a;

4               int b;

5      static int func(int n);

6

7  int main (int argc, char *argv[])

8  {

9    printf("hello world!");

10

11     return 0;

12 }

13

14 int func1(int n)

15 {

16   return 0;

17 }

 

2.       static用在代码块内的变量修饰时,表明这个变量时一个静态变量,存储在静态存储区,这种情况下相当于改变了变量的存储属性,因为默认的情况下,代码块内的变量为自动变量(auto),存储在运行时的栈中,加上static修饰,他就存储在静态存储区,在程序运行之前创建,在整个运行期间都存在,但这并不改变他的作用域。比如下面的代码,在第13行声明了一个局部静态变量:

1         #include <stdio.h>

 2

 3

4         int main (int argc, char *argv[])

5       {

6            printf("hello world!");

 7

8            return 0;

9       }

 10

11     int func1(int n)

12     {

13             static int a;

14             return 0;

15     }

 

顺便说一句,在C++中,通常用static来修饰类的函数成员或数据成员,他的作用是表明这个函数或数据成员是属于这个类的,而不是属于某个特定实例对象的,可以通过 类名::func来直接访问。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值