C语言学习07——变量的作用域

1.同名变量

(1)不同函数中的局部变量可以同名,全局变量不能同名

(2)当局部变量和全局变量同名时,优先使用局部变量

复制代码
int var=100;
void f(int var){
	var++;
	printf("var=%d\n",var);
}
int main(){
	int var=10;
	f(var); //11
	printf("var=%d\n",var); //10
	return 0;
	
}

2.变量的作用域

(1)不同名变量在重叠作用域内可分别访问

(2)在重叠作用域中,只可访问最近定义的同名变量

局部变量的作用域:从定义开始到代码块结束

全局变量的作用域:在程序所有角落都能使用,只有在当前代码文件中能访问并使用

全局数据区中的变量默认初始化为0

静态变量的作用域是整个代码文件

复制代码
int g=10;
int func(int x){
	static int s_var;
	s_var+=x;
	return s_var;
}
int main(){
	for(int i=1;i<=5;i++){
		printf("func(%d)=%d\n",i,func(i));
	}
	printf("func(0)=%d\n",func(0));
	printf("global=%d\n",g);
	return 0;
	
}

静态全局变量和全局变量的区别:

  • 普通全局变量 :作用域是整个程序 (所有源文件),只要通过 extern 声明就能跨文件使用。
  • 静态全局变量 :作用域被限制在定义它的源文件内,该文件内的所有函数都能访问,但其他文件完全不可见。

静态局部变量和局部变量的区别:

  • 普通局部变量 :存储在栈(stack) 中,栈空间由系统自动分配和释放,特点是轻量但临时;
  • 静态局部变量 :存储在全局 / 静态存储区(data segment) 中,该区域的内存从程序启动到结束一直存在。
相关推荐
lcj25114 分钟前
字符函数,字符串函数,内存函数
c语言·开发语言·c++·windows
浮芷.6 分钟前
开源鸿蒙跨平台Flutter开发:校园问答互助社区应用
学习·flutter·华为·开源·harmonyos·鸿蒙
小陈phd8 分钟前
CCPD数据集全解析:中文车牌识别的“双黄金标准“
笔记·学习·生成对抗网络
never forget shyang8 分钟前
CCS20.2.0使用教程
c语言·git·单片机
吃着火锅x唱着歌9 分钟前
深度探索C++对象模型 学习笔记 第三章 Data语意学(2)
c++·笔记·学习
_李小白12 分钟前
【OSG学习笔记】Day 35: Material(材质)
笔记·学习·材质
ZhiqianXia12 分钟前
Pytorch 学习笔记(21) : PyTorch Profiler
pytorch·笔记·学习
炽烈小老头15 分钟前
【每天学习一点算法 2026/04/10】Excel表列序号
学习·算法
渡我白衣18 分钟前
运筹帷幄——在线学习与实时预测系统
人工智能·深度学习·神经网络·学习·算法·机器学习·caffe
ZhiqianXia19 分钟前
PyTorch学习笔记(16):scheduler.py
pytorch·笔记·学习