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

简介: 教你快速了解C语言中的作用域和常量

a2a4ca6381634a028da53d0b70da6a4b.png

前言

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

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

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

作用域

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

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

局部变量的作用域
  • 局部变量的作用域是变量所在的局部范围。
    因为局部变量只在他所对应的代码段生效,出了他所在的大括号就销毁。
    下面我们来看看这段代码
int main()
{
  {
    int a = 6;
  }
  return 0;
}

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

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

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

全局变量的作用域

前面介绍了全局变量的的生效范围是全局, 在不同.c文件也可以使用。

有因为我们程序是main()函数开始

出main函数结束

所以:

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

生命周期

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

局部变量的生命周期

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

所以:

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

全局变量的生命周期

由于我们全局变量的作用域是整个工程

而程序是从进入main( )函数开始,出main( )函数结束。

那么是不是可以说:

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

二、常量

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

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

像我们直接写出来的

数字3 字符a 字符串abcd这些都是字面常量

下面我俩给大家演示一下

int main()
{
  3;
  3.15;
  'a';
  "abcd";
  return 0;
}
  • 给大家解释一下单引号 ' '引起来的是字符。
  • 双引号“ ”引起来的是字符串。
1.2   const 饰的常变量
int main()
{
  //常属性
  //这里的a是具有常属性的,不能改变,但是本质上还是变量
  const int a = 3;
  printf("%d\n", a);
  a = 10;
  printf("%d\n", a);
  return 0;
}

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

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

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

ff7b195659ce4c00957ee6389a37a8a8.png

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

那么我问大家一个问题?

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

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

06c9f9b780a5499da67c3207f2c7c3ef.png

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 aa就是10000 1000010000这个数字
创建的数组a r r [ M A X ] arr[MAX]arr[MAX],是有10000 1000010000个元素

ps:

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

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

1.1  枚举常量

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

枚举常量

  • 枚举 一一列举

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

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

那么枚举怎么定义呢?

enum SEX//性别
{
  //列出了枚举类型enum SEX的可能取值
  //枚举常量
  MALE,//男
  FEMALE,//女
  SECRET//保密
};

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

  • MALE代表的是枚举——列举的类型
枚举类型的值是多少呢?

我们来看一下

int main()
{
  printf("%d\n", MALE);
  printf("%d\n", FEMALE);
  printf("%d\n", SECRET);
  return 0;
}
  • 我们可以看到枚举常量的默认值是从0开始
  • 依次递增的。

5c3cd4a2c97c4bc7a779832447352709.png

枚举类型的值怎么修改?

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

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

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

怎么能这样修改呢!

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

  • 枚举类型的常量想修改,只能修改初始值
enum SEX
{
  MALE=4,
  FEMALE,
  SECRET
};

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

所以程序运行的结果是

c105565ed06b4f4d9566e4e11fa6af1c.png

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

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

e94cb088c637476a964e7c17bab1aa37.png

总结

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

总结一下今天学了:

  变量作用域

  变量的生命周期

  字面常量

  const 修饰的常变量

  #define 定义的标识符常量

  枚举常量

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

看到这里了还不给博主扣个点赞收藏

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖

拜托拜托这个真的很重要!

你们的点赞就是博主更新最大的动力!

有问题可以评论或者私信呢秒回哦。

2e6d5db9a14f4fd0a89ec0ad42ebdb5e.png


目录
相关文章
|
1月前
|
存储 编译器 C语言
【C语言】函数(涉及生命周期与作用域)
【C语言】函数(涉及生命周期与作用域)
|
1月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
2月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
2月前
|
安全 编译器 C语言
C语言常量的定义与使用的注意点
在 C 语言中,常量是在程序运行期间值不变的量,通过字面值、`#define` 或 `const` 关键字定义。字面常量直接在代码中表示固定值,如整数 `100`、浮点数 `3.14`、字符 `'A'` 和字符串 `"Hello, World!"`;`#define` 用于定义宏,如 `#define PI 3.14159`;`const` 则定义不可变变量,如 `const int daysInWeek = 7`。常量可用于数组大小、循环边界等场景,并能提升代码的可读性和可维护性。使用时需注意作用域、类型安全和命名,避免直接使用数字(魔法数字)。
|
2月前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
3月前
|
存储 API C语言
【C语言】 作用域和存储期
【8月更文挑战第18天】
|
3月前
|
存储 C语言 容器
C语言中的变量作用域
C语言中的变量作用域
|
5月前
|
程序员 C语言
C语言中的宏定义:从常量到高级技巧
C语言中的宏定义:从常量到高级技巧
279 1
|
4月前
|
C语言
C语言2 常量
C语言2 常量
19 0
|
4月前
|
移动开发 C语言
C语言13-----输出常量的两个小扩展
C语言13-----输出常量的两个小扩展