【C语言—零基础第十四课】变量的作用域与存储类

举报
昵称: 发表于 2022/03/30 19:38:56 2022/03/30
【摘要】 ​变量的作用域与存储类目录什么是作用域?局部变量全局变量变量的存储类自动型:auto静态型:static 动态存储方式与静态存储方式 什么是作用域?作用域就是说到在哪里可以使用在哪里不可以使用。例如你是一家公司的老总,手下的人都听你指挥。而你出了公司去别的公司调研别的公司的人也听从你的指挥吗?你也不给人家发工资人家为啥要听你指,大致就是这么个意思。如果你开了几十个公司,到这几个公司去他们也听...

​变量的作用域与存储类

目录

什么是作用域?

局部变量

全局变量

变量的存储类

自动型:auto

静态型:static

 动态存储方式与静态存储方式



 

什么是作用域?

作用域就是说到在哪里可以使用在哪里不可以使用。例如你是一家公司的老总,手下的人都听你指挥。而你出了公司去别的公司调研别的公司的人也听从你的指挥吗?你也不给人家发工资人家为啥要听你指,大致就是这么个意思。如果你开了几十个公司,到这几个公司去他们也听你的。孩子不要在幻想了,好好敲代码把。

作用域:所谓作用域就是变量的有效范围。

变量可以分为局部变量全局变量

局部变量

而在前边我们的使用都是只main()方法中实现的代码,指在main()函数中有效可用,即局部变量。

定义变量可能的三种情况:

在函数的开头定义

在函数内的复合语句中定义

在函数外部定义

在函数开头定义的只在本函数中有效}括号内部有效,在复合语句中定义的只在符合语句中有效}括号中。

总结:作用域自定义位置起,到复合语句或函数的结束。{}中有效

#include<stdio.h>
main() {
	int a = 1,b = 2;
	{
		int a = 3;
		printf("%d\n",a);
	}
	printf("%d\n", a);
}

结果: 

3

1

#include<stdio.h>
void fun() {
	int a = 10;
	printf("%d\n", a);
}
main() {
	int a = 1,b = 2;
	fun();
		printf("%d\n",a);
		
}

结果: 

10

1

全局变量

在函数外部定义的变量称为全局变量。

作用域为自定义位置起,到整个程序的结束。

#include<stdio.h>
int a = 10;
main() {
	{
	int a = 1,b = 2;
	printf("%d\n",a);
	}
	printf("%d\n", a);
		
}

结果: 

1

10

变量的存储类

自动型:auto

函数中的局部变量,默认都是动态分配存储空间的,在调用该函数时系统会给这些变量分配存储空间,函数调用结束时就自动释放存储空间。这类局部变量成为自动变量。用关键字auto。

 Auto     int       a

存储类 类型名 变量名

auto int a;

 

静态型:static

希望函数中的局部变量的值在函数调用解释后不消失而保留原值,即其占用的存储单元不释放,这类局部变量成为静态局部变量。

static a;

 

	for (int i = 0;i < 5;i++) {
		  static a= 0;
		a++;
		printf("%d\n", a);
}

 结果: 

1
2
3
4
5

总结:

auto自动型,默认类型

register容器类型(这个不太重要,就没有解释)

static静态类型、内部变量、内部函数(无法取地址)

extern 声明外部变(后边会说到)

 动态存储方式与静态存储方式

从变量值的生存期的角度划分,可以分为静态存储方式和动态存储方式。

静态区:

变量类型:静态局部变量、全局变量或外部变量、

初始化在编译阶段性下,初值为0

生存周期:整个程序

动态区:

变量类型:动态变量

初值为随机值

生存期:他所存在的的局部变量

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。