认识C语言 Day_2 >生命周期、作用域

简介: 认识C语言 Day_2 >生命周期、作用域

1.回顾变量

1.1变量的作用域和生命周期

1.1.1作用域:限定该变量可以使用的范围

1.局部变量的作用域是变量所在的局部范围。

2.全局变量的作用域是整个工程。

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
int main() {
  {
    int a = 10;
    printf("%d\n", a);//a在{}内部创建,可以在{}内部使用
  }
  return 0;
}

运行结果是

如果将代码改成下面这样,结果会怎么样呢

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
int main() {
  {
    int a = 10;
  }
  printf("%d\n", a);//a在{}内部创建,不可以在{}外部使用
  return 0;
}

该段代码运行结果是

原因是printf()函数使用时,超出了a的作用域,a的作用域在定义int a 的大括号内部

这是局部变量作用域的展示

接下来是全局变量的作用域

 

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
int a = 100;
void test() 
{
  printf("test()--->%d\n", a);//定义test()函数,打印出“”内的内容
}
int main() {
  printf("%d\n", a);//定义a为全局变量,可以在整个工程中都使用
  test();
  return 0;
}

该段代码的效果如下

可见,全局变量的作用域是整个工程

1.1.2 生命周期

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

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

2.全局变量的生命周期:整个程序的生命周期

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
int a = 100;
int main() {
  printf("%d\n", a);
  printf("%d\n", a);
  return 0;
}

该段代码的效果如下

上述代码就是全局变量a的生命周期,是整个程序的生命周期

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
int main() {
  int a = 10;
  printf("%d\n", a);
  a = 20;
  printf("%d\n", a);
  return 0;
}

上述代码是局部变量的生命周期,第一个a在第四行被定义,在第五行被执行并销毁,这就是他的生命周期;同理,第二个a在第六行被定义,在第七行被执行并销毁,这是第二个a的生命周期。

下面是该段代码的执行效果

2.常量

常量,顾名思义就是不变的量,跟变量刚好相反

C语言中常量有以下几种

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

字面常量:直接写出的值就是字面常量;例如:100、20.0、3.14、'a' 等等

const修饰的常变量:这里的常,表示的是不变的意思。const是常属性,可以用来修饰变量

通过这段代码可以看出,经过const修饰的变量,就不能再被修改了

这里,我们称b就是const修饰的常变量,具有了常属性;b本质上还是一个变量,只不过它被const在语法层面上加了一层限制,具有了常属性

cons是在语法层面加上的一层限制,就是告诉我们,该变量的值不能再被修改了

#define定义的标识符常量:

运行结果如下

通过代码,我们能很明显地感受到#define定义的是一个常量

枚举常量:枚举的意思就是一一列举

生活中有一部分数据是可以一一列举出来的:例如三原色、性别、星期、月份等等。

C语言中就给出一个枚举类型,可以把这些数据一一列举出来,比如下面这段代码:

enum Color//自定义的一个枚举类型
{
  RED,
  GREEN,
  BLUE//枚举常量
  //即该枚举类型的取值只有{}内的三种
};

这就是一个枚举类型,而枚举常量的取值是从0开始依次往下排,通过下面这段代码的执行效果就可以感受到

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
enum Color//自定义的一个枚举类型
{
  RED,
  GREEN,
  BLUE//枚举常量
  //即该枚举类型的取值只有{}内的三种
};
int main() 
{
  enum Color a = RED;
  enum Color b = GREEN;
  enum Color c = BLUE;
  printf("%d\n", a);
  printf("%d\n", b);
  printf("%d\n", c);
  return 0;
}

所以,枚举常量其实就是枚举类型可能的取值,{ }内一一列举出来的

3.结束

那么今天的学习就到这里咯,今天我们复习了之前的变量知识,又学到了新的常量知识

小杜跟各位小伙伴在一起成长,祝我们都能成为大牛!

                                                                                                                               //小杜的成长之路

相关文章
|
2月前
|
存储 编译器 C语言
【C语言】函数(涉及生命周期与作用域)
【C语言】函数(涉及生命周期与作用域)
|
4月前
|
存储 API C语言
【C语言】 作用域和存储期
【8月更文挑战第18天】
|
4月前
|
存储 C语言 容器
C语言中的变量作用域
C语言中的变量作用域
|
7月前
|
存储 C语言
C语言变量的作用域和存储类型深度解析
C语言变量的作用域和存储类型深度解析
113 0
|
7月前
|
存储 编译器 C语言
“编程界的隐形斗篷:C语言作用域与生命周期的喜怒哀乐”
“编程界的隐形斗篷:C语言作用域与生命周期的喜怒哀乐”
|
7月前
|
存储 Java 程序员
深入理解C语言中变量的生命周期
深入理解C语言中变量的生命周期
296 0
|
7月前
|
C语言
C语言变量作用域
C语言变量作用域
49 0
|
7月前
|
存储 算法 程序员
【新手解答7】深入探索 C 语言:代码缩进 + 变量作用域、静态变量 + 变量名和函数名重名
【新手解答7】深入探索 C 语言:代码缩进 + 变量作用域、静态变量 + 变量名和函数名重名
83 0
|
23天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
48 10