【初识C语言】变量和常量

news2024/12/24 8:30:46

文章目录

  • 1. 局部变量和全局变量
  • 2. 变量的作用域和生命周期
  • 3. 常量

  • 生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
  • 有些值是可变的(比如:年龄,体重,薪资)。
  • 不变的值,C语言中用常量的概念来表示,会改变的值C语言中用变量来表示。

1. 局部变量和全局变量

#include <stdio.h>

int b = 20;//全局变量

int main()
{

	int a = 10;//局部变量

	return 0;
}

局部变量

  • 大括号内部定义的变量称之为局部变量

全局变量

  • 大括号外部定义的变量称之为全局变量

局部与全局的优先级

  • 局部变量与全局变量可以使用同一个变量名。

  • 当全局变量和局部变量公用一个变量名时,局部变量优先被使用。

在这里插入图片描述

2. 变量的作用域和生命周期

变量的作用域

变量可以使用的范围称之为变量的作用域。

  • 局部变量的作用域是变量所在的局部范围(变量所在的大括号内部)。
  • 全局变量的作用域是整个工程。

在这里插入图片描述
在这里插入图片描述

变量的生命周期

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

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期。
    • 在整个程序还存在时,全局变量都可以被使用。
#include <stdio.h>

int main()
{
	{//进入这个大括号时变量a生命周期开始,变量a可以使用

		int a = 10;
		printf("a = %d\n", a);

	}//出去这个大括号时a生命周期结束,变量a无法使用

	printf("a = %d\n", a);

	return 0;
}

作用域与生命周期的区分

  • 作用域约等于生命周期,但两者不是一个概念;
  • 变量的作用域决定了变量的生命周期;
  • 作用域属于空间概念,为变量可以使用的范围。生命周期属于时间概念,为某变量生效以及结束的时间。

3. 常量

固定不变的值,C语言中通常用常量来表示。

C语言常量分类

  1. 字面常量
  2. const 修饰的常变量
  3. #define 定义的标识符常量
  4. 枚举常量

1. 字面常量

  • 直接写出的数字就是字面常量;
    • 写一个1出来他就是固定的数字1,不能被改变。
  • 用单引号引起的的字符属于字符常量;
  • 用双引号引起的字符串称为字符串常量。
//字面常量:直观的用肉眼就能知道这些是什么东西

#include <stdio.h>
int main()
{
	30;//数字常量

	'w';//字符常量

	"abc";//字符串常量

	return 0;
}

2. const 修饰的常变量

  • 一般情况下,普通的变量被赋予一个值之后,该变量还是能够被修改的;

在这里插入图片描述

  • 假设希望某个变量就是一个固定的值,不允许别人去动它,这个时候就要用 const 将该变量限制起来即可。

在这里插入图片描述

  • 在 C 语言中,被 const 修饰的变量本质上是个变量,但是不能直接被修改,有着常量的属性。

3. #define 定义的标识符常量

  • 通常将一个标识符固定为一个值,之后一旦出现该标识符时,自动将该标识符替换为固定的某个值。
  • 通常情况下,#define 定义的标识符都采用大写与变量来进行区分。

在这里插入图片描述

  • #define 定义的标识符常量的值是无法被修改的。

在这里插入图片描述

4. 枚举常量

枚举关键字 枚举类型名
{
	枚举成员1,
	枚举成员2,
	枚举成员3
};
  • 使用 enum(枚举关键字),可以创建一个新类型并指定它可以具有的值(实际上,enum常量是Int类型,因此,只要能使用int类型的地方,就可以使用枚举类型)。

  • 枚举顾名思义就是一 一列举,把某些事物的可能取值一 一列举出来。

enum Day//命名为星期的枚举类型
{
 	Mon,
 	Tues,
 	Wed,
 	Thur,
 	Fri,
 	Sat,
	Sun
};
enum Sex//性别
{
 	MALE,
 	FEMALE,
 	SECRET
}enum Color//颜色
{
 	RED,
 	GREEN,
 	BLUE
};
  • 定义类枚举类型之后,就可以使用枚举类型来创建一个枚举类型变量。
    • c 是一个关于颜色类型的变量,以后给 c 赋值的时候,只能赋红绿蓝这三者之一。这些可能取值都是有值的,默认从0开始,依次递增1。

在这里插入图片描述

  • 在定义的时候,也是可以给枚举成员赋初始值的;
    • 当某些时候需要用到大量相同类型的常量的数据的时候,既可以用 #define 来定义也可以用枚举常来来定义。
    • 例:菜市场蔬菜的价格属于相同类型的数据,如果用 #define 就要写一堆的 #define 那叫一个又臭又长,此时enum看着就很舒服了。
#include <stdio.h>

//用#define 来定义这种那是相当的麻烦
#define CABBAGE 3
#define TOMATO 5
#define CARROT 4
#define POTATO 2
//.....

enum vegetable //命名为蔬菜的枚举类型
{
	CABBAG = 3,
	TOMATO = 5,
	CARROT = 4,
	POTATO = 2
};


int main()
{
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

18款奔驰S450 4MATIC升级发光出风口,提升车内氛围感

完美匹配&#xff0c;全部都是原装位&#xff0c;安装很快&#xff0c;瞬间发光。随着氛围灯颜色的变化而变化。美丽靓丽与质感同存&#xff0c;大大提升了车的颜值档次。让您车生活更加的富有乐趣与满足&#xff01;

决策树笔记

决策树模型学习过程 1.根节点选择什么特征 2.只关注决策树的左侧分支 3.再关注右侧分支 纯度 熵就是样本的混乱程度&#xff0c;熵越大&#xff0c;越混乱&#xff0c;纯度就越低 减小熵信息增益 选择拆分信息增益 选择信息增益大的&#xff0c;以增加纯度 p1left 定义为…

2023年功能测试会被淘汰?自动化测试到测试开发?我的测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 现在2023年&#…

数据技术在金融行业有哪些应用_光点科技

随着信息技术的迅猛发展&#xff0c;大数据技术逐渐成为金融行业的重要工具。大数据技术的应用&#xff0c;不仅可以提高金融机构的运营效率&#xff0c;还能够提供更准确的风险评估和预测&#xff0c;从而为投资者和决策者提供更好的决策依据。 那么&#xff0c;大数据技术在…

ES应用风暴

文章目录 使用案例启发使用ElasticSearch作为主要的后端&#xff0c;作为搜索引擎在现有系统增加ElasticSearch使用ElasticSearch和现有的工具 常用于日志收集&#xff08;分析&#xff09;系统、实时警报 使用案例 维基百科&#xff1a;全文检索、高亮、搜索推荐。The Guar…

【无标题】Instant NGP(使用哈希编码的多分辨率的即时神经图形原语)

论文基本信息 作者&#xff1a;THOMAS MLLER&#xff0c;NVIDIA&#xff0c;瑞士ALEX EV ANS&#xff0c;NVIDIA&#xff0c;英国CHRISTOPH SCHIED&#xff0c;美国NVIDIA ALEXANDER KELLER&#xff0c;德国 关键词&#xff1a; Image Synthesis, Neural Networks, En- codings…

[230606] 听力TPO66汇总·最终篇|L3-WATM Wether Animals have a Theory Mind|19:30-21:30

[230605] 听力TPO66汇总下篇&#xff5c;L2-Fish Movement&#xff5c;13:00~14:0015:20~17:00 http://t.csdn.cn/jxqyr [230604] 听力TPO66汇总上篇&#xff5c; C1 L1 C2&#xff5c;10:20~12:00 http://t.csdn.cn/zyEGw 极度缺少相关背景知识

蓝精灵协会 | 23 年 6 月通讯

您好&#xff0c;Smurf 朋友们&#xff0c;欢迎阅读我们的新版时事通讯。它旨在分享来自社区及其项目的最新更新。我们希望您会喜欢它&#xff01; 水晶特卖&#xff1a;折扣从 6 月 19 日开始 根据社区的投票&#xff0c;我们延长了水晶薄荷的持续时间&#xff0c;并减少了折扣…

这所天津的热门院校,保护一志愿,曾连续两年专业课题目完全相同,平均140分!

一、学校及专业介绍 天津工业大学&#xff08;Tiangong University&#xff09;&#xff0c;简称“天工大”&#xff0c;位于天津市&#xff0c;是教育部与天津市共建高校、国家国防科技工业局和天津市共建的天津市重点建设高校、国家“双一流”建设高校、天津市高水平特色大学…

Python 常用内置函数与匿名函数的应用

目录 一、前言二、常用内置函数2.1 max()2.2 enumerate()2.3 map()3.4 reduce()2.5 filter()2.6 sorted() 一、前言 我们知道&#xff0c;Python 函数总体可分为两类&#xff0c;一类是标准函数&#xff0c;一类是匿名函数。其中标准函数中又可细分为内置标准函数、自定义标准…

支付宝一面:如何基于Redis实现分布式锁?

复习八股文的时候&#xff0c;分布式锁大家应该不陌生&#xff0c;像很多阿里、美团的面试官就很喜欢问这个问题。 前几天一位读者面试阿里的时候&#xff0c;就被问到了这个问题。当时&#xff0c;面试官追问的比较深&#xff0c;一些细节他回答的不是很好。不过&#xff0c;…

遭遇疑似网络攻击时服务器异常情况排查方法

一、适用场景 该方法主要用于发生网信安全异常情况时的异常设备信息提取和登机排查指导&#xff0c;主要包括主机类设备&#xff0c;linux和windows操作系统为主。 二、处理原则 网络安全应急工作坚持统一指挥、分工负责、及时预警、分级响应、密切协同、快速处置、确保恢复、…

Android Studio设置不自动运行到run标签

点击run成功后会自动切换到run标签&#xff0c;很烦人 设置&#xff1a; Edit Configuration app下的Miscellaneous 下&#xff0c;取消勾选 Activate tool window

提升项目经理能力,有什么方法?

一&#xff0c;项目管理是职场的基础能力 他思考了一会&#xff0c;和我说&#xff1a;项目经理这个职业&#xff0c;同事专业性强&#xff0c;薪酬稳定&#xff0c;福利优越。只要有几年的项目管理经验&#xff0c;也能生存无忧。 但是&#xff0c;如果你不满足于只做一个普…

计网笔记--数据链路层

1--数据链路层三个问题 ① 封装成帧 ② 差错控制 差错检测&#xff1a;奇偶校验和循环冗余校验 ③ 可靠传输 2--三种可靠传输协议 ① 停止-等待协议&#xff08;SW&#xff09; 接收成功&#xff0c;发送ACK确认信号&#xff0c;接收失败&#xff0c;发送NAK否认信号&#xf…

Elasticsearch:ignore_malformed,映射异常的解药

我们知道在文档摄入到 Elasticsearch 时&#xff0c;如果文档的字段在 mapping 中已经有定义&#xff0c;而当前的文档的字段的类型和之前的类型是不一样的情况下&#xff0c;那么我们该如何处理呢&#xff1f;通常由如下的几种方法&#xff1a; 使用 coerce 属性。在这种情况…

python微信公众号推送消息

目录 准备数据 接口 代码 微信公众号开发文档&#xff1a;https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 准备数据 1、微信公众号注册&#xff1a;https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 2、注册成功后可生…

基于TCP/UDP的Socket编程

---- socket概述&#xff1a; socket是在应用层和传输层之间的一个抽象层&#xff0c;它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX&#xff0c;在Unix一切皆文件哲学的思想下&#xff0c;socket是一种"打开—读/写…

springboot启动流程 (3) 自动装配

在SpringBoot中&#xff0c;EnableAutoConfiguration注解用于开启自动装配功能。 本文将详细分析该注解的工作流程。 EnableAutoConfiguration注解 启用SpringBoot自动装配功能&#xff0c;尝试猜测和配置可能需要的组件Bean。 自动装配类通常是根据类路径和定义的Bean来应…

005 Settings可以直接通过AndroidStudio安装并调试(二)——Settings 打release包遇到的问题

一.背景 Settings迁移到AndroidStudio中直接打release包是有各种问题的,打不出来包,这里我们详细来描述下Settings打包出现的问题及解决方案。 二.Type com.android.settingslib.widget.BuildConfig is defined multiple times 首先遇到的拦路虎,也是最繁琐的包名冲突,之…