static 用法
static 用法
1. static 变量
static修饰的变量定义:在函数内部使用 static 关键字声明的变量称为静态变量。
特点:
静态变量的生命周期在整个程序运行期间都存在,而不仅仅在函数调用时才存在。
静态变量存储在静态存储区,不会在函数调用结束后释放内存。
使用场景:
如果一个变量需要在多次函数调用之间保持其值不变,可以使用静态变量。
静态变量通常用于计数器或者保存函数的返回值等场景。
示例代码:
#include <>
int count() {
    static int counter = 0;
    counter++;
    return counter;
}
int main() {
    printf("%d\n", count());  // 输出1
    printf("%d\n", count());  // 输出2
    printf("%d\n", count());  // 输出3
    return 0;
}
2. static 函数
定义:在函数返回类型前面加上 static 关键字,使函数变为静态函数。
特点:
静态函数只能在声明它的源文件内部调用,不能被其他源文件使用。
静态函数不能被其他源文件中的函数调用,从而起到了隐藏的作用。
使用场景:
当某个函数只在当前源文件内部使用时,可以将其声明为静态函数,以减少命名冲突和提高代码的模块化程度。
示例代码:
#include <>
static int multiply(int a, int b) {
    return a * b;
}
int main() {
    int result = multiply(2, 3);
    printf("%d\n", result);  // 输出6
    return 0;
}
3. static 类成员
定义:在类中声明的 static 成员属于类本身,而不是类的实例。
特点:
所有的对象共享同一个静态成员,即静态成员对于所有的对象来说只有一份拷贝。
静态成员可以通过类名直接访问,不需要创建对象。
使用场景:
静态成员通常用于表示类的共享属性或者保存全局状态。
静态成员函数可以访问静态成员变量,但不能访问非静态成员变量。
示例代码:
#include <iostream>
class Circle {
public:
    static int count;
    int radius;
    Circle() {
        count++;
    }
};
int Circle::count = 0;
int main() {
    Circle circle1;
    Circle circle2;
    std::cout << Circle::count << std::endl;  // 输出2
    return 0;
}
4. static 修饰符
定义:在 C#、Java 等面向对象的编程语言中,static 修饰符用于定义静态成员、方法和类。
特点:
静态成员属于类本身,可以通过类名直接访问。
静态方法不能访问非静态成员变量,只能访问静态成员变量。
静态类不能被实例化,只能通过类名直接调用静态方法。
使用场景:
静态成员常用于表示全局变量、全局方法或者实用工具类。
示例代码(Java):
public class Circle {
    private static int count;
    private int radius;
    public Circle() {
        count++;
    }
    public static int getCount() {
        return count;
    }
}
public class Main {
    public static void main(String[] args) {
        Circle circle1 = new Circle();
        Circle circle2 = new Circle();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。