static和extern用法
static
static有两种使用场景:
1. 修饰变量
修饰局部变量(称为静态局部变量):出了这个变量的作用域后,该变量不会被销毁。该变量存储在静态存储区
修饰全局变量(称为静态全局变量):和普通全局变量的区别在于这个被static修饰的全局变量不能在其他源文件中使用,(即不能在其他源文件中用extern关键字修饰这个全局变量)
2. 修饰函数
和修饰全局变量类似,这个函数只能在本文件中使用,其他源文件中不能调用这个函数
extern(告诉编译器变量在其他地方定义了)
extern用在变量和函数的声明前,表示这个变量或函数在其他源文件中有定义,在此处声明是要用这个变量或函数
test1.c int i = 1;//定义并初始化,同时也是声明(只能定义一次,但可以声明多次),定义分配空间,声明不分配空间 static int j;//定义,只有test1.c文件可以访问 void func1()//函数的定义 { } static void func2() { }
test2.c extern int i;//声明多次
extern void func1();//声明。不分配存储空间
void fun3()
{
func2();
}
test3.c extern int i;//声明 extern void func2();//声明
extern void fun3(); int main() { return 0 }
当然一般是将这些声明放在一个头文件中,这样要调用哪个函数,只用包含对应的头文件就行了。上面这中做法是不包含头文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具