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

这篇具有很好参考价值的文章主要介绍了教你快速了解C语言中的作用域和常量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

前言

  哈喽,各位铁汁们好啊!✨今天来给大家带来的是初识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 定义的标识符常量
  • 枚举常量

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,使这个变量具有了常属性。

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

所以当我们改变这个变量的时候程序就会给我们报错,我们来看看!
教你快速了解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 o o x x x

那么枚举怎么定义呢?

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开始
  • 依次递增的。
    教你快速了解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 定义的标识符常量
  枚举常量
不知道大家掌握了没有,希望对各位铁汁有用呢!
看到这里了还不给博主扣个点赞收藏
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。
教你快速了解C语言中的作用域和常量文章来源地址https://www.toymoban.com/news/detail-489774.html

到了这里,关于教你快速了解C语言中的作用域和常量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】-- 一篇带你了解C语言内存五大区——栈区,堆区,全局区,常量区,代码区

    目录 1 C语言的内存分区 1.1 内存五大分区 1.2 内存分区简介 1.2.1 栈区(stack) 1.2.2 堆区(heap) 1.2.3 (全局)静态区 1.2.4 常量区 1.2.5 代码区 创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。 C语言已经持续学习一段时间了,今天特此总结一下关于C语言内存的五大区

    2024年02月16日
    浏览(34)
  • 【Go语言】Go语言中的变量和常量

    Go语言中的变量和常量 1 变量 变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 Go 语言是强类型静态语言,所以变量的声明与赋值方式与 PHP/Python 等动态语言相比有很大的区别。

    2024年02月21日
    浏览(36)
  • 初始Go语言2【标识符与关键字,操作符与表达式,变量、常量、字面量,变量作用域,注释与godoc】

      go变量、常量、自定义类型、包、函数的命名方式必须遵循以下规则: 首字符可以是任意Unicode字符或下划线。 首字符之外的部分可以是Unicode字符、下划线或数字。 名字的长度无限制。 理论上名字里可以有汉字,甚至可以全是汉字,但实际中不要这么做。 Go语言

    2023年04月09日
    浏览(35)
  • Rust 笔记:Rust 语言中的常量与变量

    Rust 笔记 Rust 语言中的常量与变量 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130875912 【介绍】:本文介绍 Rust 语言中的常量与变量。 上一节:《 上一节标题 》 | 下一节:《

    2024年02月06日
    浏览(48)
  • 作用域和作用域链的相关知识

    作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问。 作用域分为: 局部作用域 全局作用域 局部作用域分为函数作用域和块作用域。 在函数内部声明的变量只能在函数内被访问,外部无法直接访问。 总结 : 函数内部声明的变量,在函数

    2024年02月08日
    浏览(33)
  • Javascript作用域 (局部作用域和全局作用域) 详细介绍

    作用域是当前的执行上下文,值和表达式在其中“可见”或可被访问。 常见的作用域为: 全局作用域:脚本模式运行所有代码的默认作用域 函数作用域:由函数创建的作用域 局部作用域:用对象{}包着(一个代码块)创建出来的作用域 在 了解作用域之前先看一下全局变量

    2024年02月08日
    浏览(51)
  • 【一起学数据结构与算法】快速教你了解并实现单链表

    此篇是对单链表知识的学习和实现,基本上大体的方法实现和思路都已经表达,如果有不对的地方,还请各位大佬多多指教! 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素

    2024年02月19日
    浏览(32)
  • 【C语言趣味教程】(5) 常量:字面常量 | 类型常量 | const 关键字 | const 的声明 | 程序中的只读概念 | const 保护机制 | 如何巧妙区分 “指针常量“ 和 “常量指针“

        🔗 《C语言趣味教程》👈 猛戳订阅!!! ✨ 专栏介绍 / 总目录: 【C语言趣味教程】(0) 导航篇 ​ —— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面: 这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人

    2024年02月15日
    浏览(35)
  • Bean作用域和生命周期

    hi,今天为大家带啦Bean的作用域和生命周期的相关知识 Bean的作用域和我们之前学过的不一样,我们之前学的作用域是一个范围,而现在指的是 Bean在Spring框架中的某种行为模式,也就是一个动作. 这样干巴巴的说看我可能无法理解,我们来举个例子 创建一个公共类的一个公共对象

    2024年02月15日
    浏览(42)
  • Bean 作用域和生命周期

    Spring 容器是用来存储和读取 Bean 的 , 因此 Bean 是 Spring 中最核心的操作资源. 编写代码过程中 , bean 对象如果有多个属性 , 创建 Getter , Setter, 构造方法 等方法 , 会产生大量冗长的代码. 那么为了使代码更加简洁 , 我们可以使用 Lombok 框架 , 只需要一行注释 , 就可以避免大量冗长

    2024年02月05日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包