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

相关推荐
蒸蒸yyyyzwd1 小时前
后端学习笔记 day111
笔记·学习
叼烟扛炮1 小时前
[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战
人工智能·笔记·学习·langchain
Severus_black2 小时前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
Century_Dragon2 小时前
让新能源故障诊断实训“触手可及“——仿真教学软件(VR)介绍
学习
楚山之石3 小时前
【Radiology】影像组学的标准化与可重复性:IBSI 卷积滤波器共识及其未能覆盖的环节
人工智能·学习·机器学习·mri
小李不想当小白4 小时前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
旖旎夜光5 小时前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习
希和20276 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
旖旎夜光6 小时前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
叼烟扛炮11 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain