static与extern使用

前言:回顾C中extern与static的使用

场景1:静态局部变量(函数内部)

void counter( ) {

// 普通局部变量:每次函数调用都会重新初始化

int normal_var = 0;

normal_var++;

printf("normal_var = %d\n", normal_var); // 总是输出1

// 静态局部变量:只初始化一次,生命周期持续到程序结束

static int static_var = 0; // 初始化只执行一次!

static_var++;

printf("static_var = %d\n", static_var); // 每次调用递增

}

场景2:静态全局变量/函数(文件作用域)

file1.c //称为:文件名

// 普通全局变量:其他文件可见

int global_var = 100;

// 普通函数:其他文件可见

void public_func( ) ;

// 静态全局变量:只在当前文件可见

static int static_global_var = 200;

// 静态函数:只在当前文件可见(隐藏实现)

static void private_func( ) ;

// file2.c

// 声明外部变量和函数

extern int global_var; // 可以访问

extern void public_func(); // 可以调用

// extern int static_global_var; // 错误!无法访问

// extern void private_func(); // 错误!无法调用

相关推荐
charlie1145141912 小时前
通用GUI编程技术——图形渲染实战(二十八)——图像格式与编解码:PNG/JPEG全掌握
开发语言·c++·windows·学习·图形渲染·win32
fly_over2 小时前
Claude Code 从零复刻教程 第 1 篇:项目初始化与 CLI 骨架
学习·源码·ai编程·工具·命令行·claude code
AI_零食2 小时前
开源鸿蒙跨平台Flutter开发:手账记事模板库应用
学习·flutter·华为·开源·harmonyos·鸿蒙
我要成为嵌入式大佬3 小时前
正点原子MP157--问题详解--五(beep编写报错端口繁忙)
stm32·嵌入式硬件·学习
范纹杉想快点毕业3 小时前
Zynq开发视角下的C语言能力分级详解
c语言·开发语言
世人万千丶3 小时前
开源鸿蒙跨平台Flutter开发:古诗词学习应用
学习·flutter·华为·开源·harmonyos·鸿蒙
arvin_xiaoting3 小时前
OpenClaw学习总结_IV_认证与安全_4:Multi-Account Patterns详解
人工智能·学习·安全
野指针YZZ3 小时前
XV6操作系统:proc机制学习笔记
笔记·学习
把csdn当日记本的菜鸡3 小时前
Vue3 响应式 API 简单学习
javascript·vue.js·学习