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(); // 错误!无法调用

相关推荐
_李小白1 分钟前
【C++学习笔记】新特性之inline变量
c++·笔记·学习
码完就睡1 小时前
C语言——动态内存
c语言·开发语言
aloha_7892 小时前
软考信息系统项目管理师错误归纳总结
java·学习
呉師傅2 小时前
UPS滴滴告警!如何测量UPS电池内阻【UPS学习】
运维·服务器·网络·学习·电脑
lizhihai_992 小时前
股市学习心得-与英伟达核心 PCB 相关的八家关联企业
大数据·人工智能·学习
阳光宅男@李光熠4 小时前
【电子通识】贴片电阻上的丝印332、5R6、1502、01C怎么读出阻值?
笔记·学习
arronKler4 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
sakiko_5 小时前
Swift学习笔记31-网络请求
网络·笔记·学习·swift
我命由我123456 小时前
Android Framework P3 - MediaServer 进程、认识 ServiceManager 进程
android·c语言·开发语言·c++·visualstudio·visual studio·android runtime
星夜夏空996 小时前
STM32单片机学习(20) —— 利用中断实现串口通信(填前面的坑)
stm32·单片机·学习