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) 中,该区域的内存从程序启动到结束一直存在。
相关推荐
leixj02521 分钟前
SVN学习笔记
笔记·学习·svn
毕设源码_廖学姐1 小时前
计算机毕业设计springboot古诗词学习App 基于SpringBoot的中华经典诗文数字化研习平台 SpringBoot框架下的传统诗词文化移动学习系统
spring boot·学习·课程设计
Irissgwe1 小时前
C&C++内存管理
c语言·开发语言·c++·c++内存管理
雾岛听蓝1 小时前
C文件操作与系统IO
linux·c语言·开发语言·经验分享·笔记·算法
盐焗西兰花2 小时前
鸿蒙学习实战之路-Share Kit系列(7/17)-自定义分享面板操作区
linux·学习·harmonyos
Yupureki2 小时前
《C++实战项目-高并发内存池》3.ThreadCache构造
服务器·c语言·c++·算法·哈希算法
香水5只用六神2 小时前
【RTOS快速入门】07_同步互斥与通信概述
单片机·嵌入式硬件·学习·操作系统·freertos·rtos·嵌入式软件
spiritualfood2 小时前
蓝桥杯大学b组水质检测
c语言·c++·算法·青少年编程·职场和发展·蓝桥杯
庭前云落3 小时前
从零开始的Hardhat学习 1| Hardhat 的基本使用、部署智能合约
学习·智能合约
飞Link3 小时前
深度捕捉时序本质:TSTD 异常检测之表示学习(Representation-based)全解析
学习·算法·数据挖掘·回归