目录
  • 前言
  • 一、变量作用域和生命周期
    • 作用域
      • 局部变量的作用域
      • 全局变量的作用域
    • 生命周期
      • 局部变量的生命周期
      • 全局变量的生命周期
  • 二、常量
    • 2.1 字面常量
      • 2.2   const 饰的常变量
      • 总结

        前言

        哈喽,各位铁汁们好啊!✨今天来给大家带来的是初识C语言里面的作用域、常量。

        这几章主要带大家简单认识-一下C语言,俗话说没吃过猪肉,也见过猪跑。带大家了解下C语言。可以读懂C语言的简单程序,后期会给大家详细介绍C语言。

        一、变量作用域和生命周期

        作用域

        作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。

        那么局部变量和全局变量的作用域的范围是多少呢?

        局部变量的作用域

        局部变量的作用域是变量所在的局部范围。
        因为局部变量只在他所对应的代码段生效,出了他所在的大括号就销毁。
        下面我们来看看这段代码

        int main()
        {
        	{
        		int a = 6;
        	}
        	return 0;
        }

        像这个代码就会报错,因为 变量 a a a 只在他所在的大括号生效出去·就销毁了。

        int main()
        {
        	{
        		int a = 100;
        	}
        	printf("%d\n", a);
        	return 0;
        }

        像这个代码就不会报错,因为 变量 a a a 只在他所在的大括号包含的范围生效,而里面的大括号也在这个范围所以可以使用。

        全局变量的作用域

        前面介绍了全局变量的的生效范围是全局, 在不同.c文件也可以使用。
        有因为我们程序是main()函数开始
        出main函数结束
        所以:全局变量的作用域是整个工程。

        生命周期

        变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

        局部变量的生命周期

        局部变量是进局部范围开始创建,出了他的局部范围就销毁。
        所以:

        局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

        全局变量的生命周期

        由于我们全局变量的作用域是整个工程
        而程序是从进入main( )函数开始,出main( )函数结束。
        那么是不是可以说:

        全局变量的生命周期是:整个程序的生命周期。

        二、常量

        C语言中的常量分为以下以下几种:

        • 字面常量
        • const 修饰的常变量
        • #define 定义的标识符常量
        • 枚举常量

        2.1 字面常量

        像我们直接写出来的
        数字3 字符a 字符串abcd这些都是字面常量
        下面我俩给大家演示一下

        int main()
        {
        	3;
        	3.15;
        	'a';
        	"abcd";
        	return 0;
        }

        给大家解释一下单引号 ' '引起来的是字符。

        双引号“ ”引起来的是字符串。

        2.2   const 饰的常变量

        int main()
        {
        	//常属性
        	//这里的a是具有常属性的,不能改变,但是本质上还是变量
        	const int a = 3;
        	printf("%d\n", a);
        	a = 10;
        	printf("%d\n", a);
        	return 0;
        }

        这里我们用const关键字修饰了变量a,使这个变量具有了常属性。

        常属性就是不能被更改的属性,从语法层面直接限制了这个变量

        所以当我们改变这个变量的时候程序就会给我们报错,我们来看看!

        一文教你快速了解C语言中的作用域和常量

        他说左值指定的是const的对象所以不能修改,给我们报错了

        那么我问大家一个问题?

        • 我们一直在讲变量和常量
        • 那么由变量用const修饰的常变量可以当成常量用吗?
        • 可以不可以实践便知:来看下面这段代码
        int main()
        {	//数组
        	const int n = 10;
        	int arr[n];
        	return 0;
        }

        他给我们的报错是这样的,我来给大家解释一下:

        一文教你快速了解C语言中的作用域和常量

        arr数组【】里面必须输入常量表达式
        诶,是不是很奇怪。

        我们明明已经将变量 n,用const修饰成了常变量为什么他还提示我们输入常量呢?

        这说明关键字const虽然把变量n修饰成了常变量。但是变量a本质上还是变量所以不能被当来常量使用。

        1.1  #define 定义的标识符常量

        什么是 #define 定义的标识符常量呢?

        #define MAX 10000
        //符号名是MAX  本质上代表的数字是10000
        int main()
        {
        	int a = MAX;
        	int arr[MAX] = {0};
        	printf("%c", a);
        	return 0;
        }

        #define MAX 10000
        这里#define定义了一个MAX常量

        • 符号名是MAX 本质上代表的数字是10000
        • 这里代表的意思是10000本来是没有什么意义的,
        • 但是我们需要一个最大值MAX,我们把10000定义成我们的最大值
        • 以后我们的最大值MAX代表的就是10000

        所以我们赋给变量 a a a就是 10000 10000 10000这个数字

        创建的数组 a r r [ M A X ] arr[MAX] arr[MAX],是有 10000 10000 10000个元素

        ps:

        虽然暂时还没有给各位铁汁讲数组但这里先让大家见识一下

        后面会给各位铁汁详细讲解数组,看完秒懂!

        1.1  枚举常量

        这里只是给大家简单讲解一下,后面会详细讲解

        枚举常量

        枚举 一一列举

        生活中有些值是可以一一列举

        性别:男、女、保密
        三原色:red green blue
        血型: o oo x xx

        那么枚举怎么定义呢?

        int main()
        {
        	printf("%d\n", MALE);
        	printf("%d\n", FEMALE);
        	printf("%d\n", SECRET);
        	return 0;
        }

        这里我们就定义了一个枚举常量SEXenum代表的是枚举类型

        MALE代表的是枚举——列举的类型

        枚举类型的值是多少呢?

        我们来看一下

        int main()
        {
        	printf("%d\n", MALE);
        	printf("%d\n", FEMALE);
        	printf("%d\n", SECRET);
        	return 0;
        }

        我们可以看到枚举常量的默认值是从0开始依次递增的。

        一文教你快速了解C语言中的作用域和常量

        枚举类型的值怎么修改?

        相信各位铁汁们,都想说修改那不是很简单直接改值不就完了。

        int main()
        {
        	enum SEX s = FEMALE;
        	printf("%d\n", MALE);
        	return 0;
        }

        但是大家可别忘,枚举类型他可是个常量。

        怎么能这样修改呢!

        所以他肯定会给我们报错。

        枚举类型的常量想修改,只能修改初始值

        enum SEX
        {
        	MALE=4,
        	FEMALE,
        	SECRET
        };

        这里我们就把SEX这个枚举类型MALE的初始值修改成了4

        所以程序运行的结果是

        一文教你快速了解C语言中的作用域和常量

        我们也可以给每一个枚举常量单独赋值

        enum SEX
        {
        	//列出了枚举类型enum SEX的可能取值
        	//枚举常量
        	MALE=4,
        	FEMALE=8,
        	SECRET=11
        };

        一文教你快速了解C语言中的作用域和常量

        总结

        好了今天主要是带大家认识变量和常量

        总结一下今天学了:

          变量作用域
          变量的生命周期
          字面常量
          const 修饰的常变量
          #define 定义的标识符常量
          枚举常量

        不知道大家掌握了没有,希望对各位铁汁有用呢!

        声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。