【初识C语言(1)】变量和常量

news2024/11/23 22:33:58

文章目录

  • 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/685504.html

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

相关文章

GitHub 上数百万个存储库可能容易被劫持

GitHub 上数以百万计的企业软件存储库很容易受到重新劫持&#xff0c;这是一种相对简单的软件供应链攻击&#xff0c;威胁行为者将依赖于特定存储库的项目重定向到恶意攻击。 研究人员在本周的一份报告中表示&#xff0c;这个问题与 GitHub 用户或组织更改项目名称或将其所有权…

chatgpt赋能python:Python自动执行程序:提高效率,降低出错率的利器

Python自动执行程序&#xff1a;提高效率&#xff0c;降低出错率的利器 随着科技的进步和信息技术的发展&#xff0c;人们越来越依赖计算机和自动化技术来完成繁琐的工作。自动化编程技术的应用也越来越广泛&#xff0c;其中Python自动执行程序被广泛使用。 Python自动执行程…

图像处理的两种变换:2D-DWT和Gabor变换

pywt官方API文档&#xff1a; 2D Forward and Inverse Discrete Wavelet Transform 目录 1. 二维离散小波变换2D-DWT 1.1 二维离散小波变换的相关公式 1.2 使用pywt实现2D-DWT 2. 窗口傅里叶变换Gabor 1. 二维离散小波变换2D-DWT DWT(Discrete Wavelet Transformation)代…

c语言通讯录——静态版本(带详细文字解释)

1.定义用于存储一个人信息的结构体 typedef struct PeoInfo {char name[NAME_MAX];int age;char sex[SEX_MAX];char addr[ADDR_MAX];char tele[TELE_MAX]; }PeoInfo;定义了一个名为 “PeoInfo” 的结构体&#xff08;struct&#xff09;类型&#xff0c;用于存储有关一个人的信…

MIAOYUN“一云多芯”全栈信创解决方案获认可!

信创&#xff0c;即信息技术产业创新&#xff0c;是数据安全、网络安全的基础&#xff0c;也是新基建的重要组成部分。信创产业发展已经成为经济数字化转型、提升产业链发展的关键&#xff0c;促进信创产业在本地落地生根&#xff0c;带动传统IT信息产业转型&#xff0c;构建区…

使用POI将excel文件导入到数据库

概要 随着时代变化&#xff0c;有的需求也会越来越多&#xff0c;例如&#xff1a;有的文件上千条数据需要导入数据库不可能手动一条条导入吧&#xff1f;太浪费时间了&#xff01;所以需要编写程序让程序来导入 整体架构流程 我这里使用的是springbootmybatisMVC的项目架构…

接口测试流程、测试点和测试工具

目录 前言&#xff1a; 一、什么情况下开展接口测试&#xff1f; 二、如何进行接口测试 三、接口测试用例设计 四、接口测试工具 前言&#xff1a; 接口测试是一种重要的测试类型&#xff0c;用于验证应用程序接口的功能、性能和可靠性。 一、什么情况下开展接口测试&am…

AtomicInteger源码

介绍 Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包&#xff0c;包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下&#xff0c;当有多个线程同时执行这些类的实例包含的方法时&#xff0c;具有排他性&#xff0c;…

大坝渗流监测的目的和意义

​  大坝渗流监测是对坝体内渗流场进行的监测&#xff0c;是确保大坝安全运行的重要手段。通过监测&#xff0c;可以掌握渗流场的变化规律&#xff0c;并根据渗流场的变化趋势预测坝体、坝基可能出现的问题。通常根据渗漏量与渗流量两个指标来进行监测&#xff0c;即渗漏量小…

【ndarry的基本操作】——numpy03

目录索引 基本索引和切片&#xff1a;普通索引&#xff1a;省略索引&#xff1a;多省略索引&#xff1a;间隔索引&#xff1a; 形态变换操作&#xff1a;reshape()&#xff1a;resize()&#xff1a;transpose()&#xff1a;*通过参数进行转置&#xff1a;* flatten()&#xff1…

usb转8路串口模块

开源USB转8路串口PCB设计 文章目录 开源USB转8路串口PCB设计1. 简介2. 说明3. 一种跨电脑跨USB口的端口号自动识别方法4.开源地址 今天给大家介绍一款USB转8路串口的PCB设计&#xff0c;并提供一种跨电脑跨USB口的端口号自动识别方法。 1. 简介 芯片采用沁恒的CH348Q&#xff…

Kotlin Jetpack Compose - 实现Tab布局

Tab布局是一种常见的UI设计&#xff0c;它允许用户在不同的视图或数据集之间切换。我们将使用Jetpack Compose的 TabRow 和 ScrollableTabRow 组件来实现这个布局。 一、基本的Tab布局——TabRow 二、滚动的Tab布局——ScrollableTabRow 组件 三、自定义Tab组件 一、基本的T…

音视频数据处理-H265/HEVC视频码流分析

一、H265概述 H265/HEVC&#xff08;Hight Efficiency Video Coding&#xff09;是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准&#xff0c;主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行…

chatgpt赋能python:Python自动化定位元素的方法详解

Python自动化定位元素的方法详解 作为一名Python编程经验丰富的工程师&#xff0c;我经常需要用到自动化定位元素的方法。今天&#xff0c;我想与大家分享一下在Python中如何自动化定位元素&#xff0c;以帮助那些想要进行Web自动化测试的开发者们。 什么是自动化定位元素 在…

chatgpt赋能python:Python聊天界面:开发高效且易于使用的消息应用

Python聊天界面&#xff1a;开发高效且易于使用的消息应用 Python是一种十分流行的编程语言&#xff0c;最近几年来&#xff0c;这种语言在GUI应用程序开发方面也越来越受欢迎。在本篇文章中&#xff0c;我们将介绍如何使用Python开发一个高效且易于使用的消息应用程序——聊天…

chatgpt赋能python:Python自动化定位——解放SEO员工的双手

Python自动化定位——解放SEO员工的双手 SEO&#xff08;Search Engine Optimization&#xff09;是现代数字营销中必不可少的一环。面对庞大的网络世界&#xff0c;SEO员工们日复一日地进行着关键词排名、页面跳转、链接检测等重复且繁琐的工作。而Python作为一种功能强大、易…

chatgpt赋能python:Python自动执行:提高效率,增强灵活性

Python自动执行&#xff1a; 提高效率&#xff0c;增强灵活性 随着时代进步&#xff0c;人们日常生活中越来越依赖计算机和网络技术&#xff0c;而在编程领域&#xff0c;Python语言作为一种高效、可读性好、易学易用的语言&#xff0c;得到了广泛应用。其中&#xff0c;Pytho…

【算法之栈与队列I】leetcode239. 滑动窗口最大值

232.用栈实现队列 力扣题目链接 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并…

使用netwox 的实例进行ARP地址解析协议分析【网络工程】(保姆级图文)

目录 1. netwox 构造 ARP 报文使用 netwox 工具构造 ARP 包。1) 查看 netwox 所在主机默认的 ARP 包的相关信息&#xff0c;执行命令如下&#xff1a;2) 构造 ARP 请求包&#xff0c;请求目标主机 192.168.43.95&#xff0c;执行命令如下&#xff1a;3) 为了验证构造的 ARP 请求…

IDEA(2021.3.3) 登录Github copilot最新版本报错解决

"Request sign ln Initiate failed with message:read ECONNRESET, request id: 6, error code:-32603 " .在获得github认证后的登录设备验证阶段弹出。此处应该为login 弹出异常&#xff0c;方法一&#xff1a;先使用Github 520进行动态替换&#xff0c;打开自己hos…