更改网站文章上传时间,给公司做网站的公司,郑州专业seo哪家好,深圳商城网站设计电话文章目录 1.C 静态局部变量时2.C 静态全局变量/函数时3.C 类静态成员时静态成员变量静态成员函数 1.C 静态局部变量时
作用#xff1a;函数内的“记忆者” 代码#xff1a;
#include stdio.hvoid counter() {static int count 0; // 只初始化一次#xff01;cou… 文章目录 1.C 静态局部变量时2.C 静态全局变量/函数时3.C 类静态成员时静态成员变量静态成员函数 1.C 静态局部变量时
作用函数内的“记忆者” 代码
#include stdio.hvoid counter() {static int count 0; // 只初始化一次count;printf(调用次数: %d\n, count);
}int main() {counter(); // 输出调用次数: 1counter(); // 输出调用次数: 2counter(); // 输出调用次数: 3return 0;
}特性
存储在静态存储区只初始化一次首次执行时保持值跨函数调用默认初始化为0static int x;等价于static int x 0;
内存布局 ±------------------ | 栈区 | ← 普通局部变量 ±------------------ | 堆区 | ← malloc分配的内存 ±------------------ | 静态存储区 | ← static变量在此 | ±------- | | | count | | | ±------- | ±------------------ | 代码区 | ← 程序指令 ±------------------
2.C 静态全局变量/函数时
作用文件内的“隐私保护者” 代码 module1.c
static int hiddenVar 42; // 只能在本文件访问static void privateFunc() { // 只能在本文件调用printf(私有函数\n);
}void publicFunc() {privateFunc(); // 正确同文件可调用printf(访问隐藏变量: %d\n, hiddenVar);
}module2.c
extern void publicFunc(); int main() {publicFunc();// privateFunc(); // 错误不可见// hiddenVar 10; // 错误不可见return 0;
}特性 1.实现封装隐藏模块内部实现细节 2.避免命名冲突不同文件的同名static变量互不影响 3.提高安全性防止外部代码意外修改内部状态
3.C 类静态成员时
静态成员变量
作用类的”共享状态“ 代码
class Player {
public:static int totalPlayers; // 声明Player() {totalPlayers; // 所有对象共享计数器}static int getTotal() { return totalPlayers; }
};// 必须在类外定义和初始化
int Player::totalPlayers 0; int main() {Player p1;Player p2;cout 玩家数量: Player::getTotal(); // 输出2
}特性 1.不属于任何对象属于类本身 2.必须在类外单独定义和初始化 3.可通过类名直接访问Player::totalPlayers 4.所有对象共享同一份副本
静态成员函数
作用类的“工具集” 代码
class MathUtils {
public:static double pi() { return 3.1415926; }static int add(int a, int b) { return a b; }
};// 使用示例
double circleArea MathUtils::pi() * radius * radius;
int sum MathUtils::add(5, 3);