static的作用

1.屏蔽同名冲突,限定变量或函数只在本文件中可见。

2.存储在静态存储区,保持数据持久性。

3.

结果是:

1

2

3


结果也是:

1

2

3

这说明变量不再受局部的限制了,因为全局存储区是不受限制的。

3.面向对象的静态成员变量。

对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新;

4.面向对象的静态成员函数

静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

静态成员函数不能访问非静态成员函数和非静态数据成员;

非静态成员函数可以任意地访问静态成员函数和静态数据成员;

由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;

If you have any questions or ideas ,please feel free to contact me : )

thx.^^


QQ: 1623213673



### static关键字在编程中的作用和用法 #### 一、全局静态变量 当`static`用于修饰全局变量时,它限定了该变量的作用域仅局限于声明它的源文件内。这意味着其他文件即使通过外部声明也无法访问这个变量[^3]。 ```c // 文件A.c static int globalVar = 10; // 文件B.c无法访问globalVar ``` #### 二、局部静态变量 如果`static`用来修饰局部变量,则此变量在整个程序运行期间都存在,但是其作用范围仍然局限在其所在的函数内部。每次调用该函数时,不会重新创建这些变量而是保留上次结束后的状态[^4]。 ```cpp void func() { static int counter = 0; ++counter; printf("%d\n", counter); } int main(){ func(); // 输出1 func(); // 输出2 return 0; } ``` #### 三、静态函数 对于函数来说,加上`static`限定符之后,就变成了静态函数。这种类型的函数只能在同一源文件内的其它部分被调用,而不能从别的地方直接引用它们[^3]。 ```c // File A.c static void helperFunction(){} // Other files cannot call helperFunction directly. ``` #### 四、类的静态成员 在面向对象的语言里比如Java或者C++, `static`可以应用于类的数据成员(即字段)。这样的数据成员属于整个类而非某个特定的对象实例;因此所有的此类对象共享同一个副本[^1]。 ```java public class Counter{ public static int count=0; public Counter(){ count++; } } Counter c1=new Counter(); System.out.println(c1.count); // prints 1 Counter c2=new Counter(); System.out.println(c2.count); // also prints 2 because they share the same 'count' ``` #### 五、类的静态方法 同样地, 当把`static`加到方法前面的时候,意味着这是一个不需要任何具体对象就可以调用的方法——也就是常说的“类方法”。这类方法可以直接由类名来调用而不必先建立一个实际存在的对象[^1]。 ```java public class MathUtil { public static double pi = 3.14159; public static double circleArea(double r){ return pi *r*r ; } } double area=MathUtil.circleArea(radius); ``` #### 六、注意事项 尽管`static`提供了很多便利之处,但在某些情况下也可能带来负面影响。例如,在嵌入式开发领域中,过多使用可能导致内存分配固定化从而增加资源消耗,并且可能让调试变得更加困难。所以应该谨慎考虑何时何地采用这种方式[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值