【C语言复习】第五篇、关于C语言变量,常量,字符串,转义字符的知识

news2025/1/13 14:10:32

目录

第一部分、关于变量

1、什么是变量?变量的分类?

2、变量的作用域?变量的生命周期?

第二部分、关于常量

1、什么是常量?

2、如何定义常量?

第三部分、关于字符串

1、什么是字符串?

2、如何定义字符串数组?

3、字符串的结束标志?

3.1、如何验证编译器是通过寻找\0来判断一个字符串是否结束的?

3.2、如何验证结束标志\0是不算在字符串长度中的?

3.3、如何验证结束标志\0是不算在字符串内容中的?

第四部分、关于转义字符

1、什么时候需要转义?

2、常见的转义字符        

3、练习一下


第一部分、关于变量

1、什么是变量?变量的分类?

        变量:可以改变的量就叫变量,例如体重、年龄等。

        变量的分类:可分为全局变量和局部变量,全局变量:定义在main{}外面的变量;局部变量:定义在main{里面的变量}。

2、变量的作用域?变量的生命周期?

        作用域:某个变量它能够发挥作用的范围,超过这个范围就无法使用。例如:跨文件的变量,必须要利用extern来实现。

        生命周期:变量创建和销毁的时间段。

第二部分、关于常量

1、什么是常量?

          常量:不可以改变的量,例如圆周率,性别等。

2、如何定义常量?

  • const int a = 10; const修饰的常变量(易混淆static)
  • enum 名称 { a,b,c}; 枚举常量
  • #define max 10; #define定义的常量

示例如下: 

#define max 100;

enum SEX
{
    aa,//从0开始算
    bb = 2,
    cc
};

int main()
{
        //const 修饰的常变量
        const int a = 10;//此时a值无法改变,但是a只能称作常变量,还是属于变量范畴,让a做a[a],是错误的
        printf("%d\n", a);
        //宏定义的常量
        int max1 = max;     
        printf("%d\n", max1);
        //枚举常量
        enum SEX val1 = aa;
        printf("%d\n", val1);
    
        return 0;
}

第三部分、关于字符串

1、什么是字符串?

        由双引号引起来的一串字符称为字符串。

        注意:单引号引起来的是一个字符,双引号引起来的是字符串所以单个字母用单引号,字符串用双引号。

//下面这两句话是等效的,%c打印一个字符,和单引号‘’相对应   
//%s打印一个字符,和双引号“”相对应
printf("%s\n","a"); 
printf("%c\n",'a');

2、如何定义字符串数组?

  •         方式一:char val[] = "aaasdadasfd";
  •         方式二:char val[] = {'a','a','a','d','a','s','f','d','\0'};

        注意:有大括号用单引符,无大括号用双引号。

        例如错误的表达方式:char val[] = {"aaasdadasfd"};这是一种错误的定义方式,没有这种定义方式。

3、字符串的结束标志?

        首先在编译器中,字符串一定是要有结束标志的符号,也就是\0,因为在内存中,去寻找字符串或者计算字符串长度时都必须要找到结束标志,不然无法确定内存中的多少到多少是一个字符串。

         注意:字符串的结束标志是一个 \0 的转义字符,编译器去判断一个字符串是否结束,就是看结尾是否有\0,但是\0不算做字符串的内容,也不算在字符串长度里面strlen计算不算,但是sizeof算,如下截图)。

3.1、如何验证编译器是通过寻找\0来判断一个字符串是否结束的?

3.2、如何验证结束标志\0是不算在字符串长度中的?

3.3、如何验证结束标志\0是不算在字符串内容中的?

第四部分、关于转义字符

1、什么时候需要转义?

         例如:在C语言编译器中,我们都知道\n是用来换行的,如下:

printf("\n");//换行

        现在我不想让它换行,我就想单纯打印\n这两个字符。那该如何打印呢?

        这个就需要通过斜杠\来进行转义,将\n换行的含义进行转换,转换为2个字符。如下:

        通过上面的例子分析可知,当某两个字符或几个字符组合在一起时C编译器会默认它有某种功能,从而就不会去打印这几个字符,而是去实现他们组合的功能。

        换句话说就是,就是当编译器无法识别当前我想打印的内容时,这个时候就需要用到斜杠\去转义,实现我们想打印的内容。

2、常见的转义字符        

转义字符含义

\'

用于表示字符常量'

\"

用于表示一个字符串内部的双引号"

\\

用于表示一个反斜杠\

\n

换行

\r

回车

\t

水平制表符(行输出Tab)

\v

垂直制表符(列输出Tab)

\ddd

ddd表示1~3个八进制的数字,对应ASCII码表

\xdd

dd表示2个十六进制数字,对应ASCII码表

\a

警告字符,蜂鸣

\b

退格符

\f

进纸符

3、练习一下

        数一下面字符串的长度:

char arr[] = "c:\test\628\test.c";

         结果应该是:14个。

        这里需要理解的就是\628与上表格中的特殊转义字符\ddd,很类似,但是需要注意的是八进制数据,8已经超过8进制了,因此8单独算一个字符。\62算一个特殊字符。

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

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

相关文章

2023年春季学期NLP总结作业

自然语言处理(Natural Language Processing,NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向…

【网络原理】TCP连接管理机制(三次握手四次挥手)

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 在使用TCP协议进行网络交互时,TCP会进行三次握手即建立连接,TCP四次挥手…

Stable Diffusion局部重绘功能,如何完美抹掉不想要的物体?

网上一堆文生图教程,这种抽卡式东西玩几天就没有意思了,怎么按照自己的意愿生成自己的图是非常有意思的东西,所以我对局部重绘特别感兴趣,借助 SD 的扩散算法,如何利用它的扩散算法来向着自己期望的方向上呈现&#xf…

分享5款十分小众的软件,不好用你找我

今天推荐5款十分小众的软件,但是每个都是非常非常好用的,用完后觉得不好用你找我。 网络测速——NetSpeedMonitor NetSpeedMonitor是一款用于测量和显示你的网络速度的工具。它可以让你在任务栏上看到你的实时上传和下载速度,并提供多种功能…

Win10任务栏一直转圈圈不能操作怎么办?

Win10任务栏一直转圈圈不能操作怎么办?Win10电脑用户遇到了任务栏一直转圈圈不能操作的问题,不知道怎么操作才能解决,这时候用户可以打开桌面上的控制面板,点击卸载更新补丁,也可以通过打开命令提示符窗口,…

【业务功能篇30】代码重构--卫语句/idea内置工具抽象方法

业务场景: 当前我们项目在发布流水线的时候,codecheck 圈复杂度高于10的,或者14的,需要进行一些整改, 什么是圈复杂度? 圈复杂度(Cyclomatic complexity,CC)也称为条件复…

【Leetcode60天带刷】day07哈希表——454.四数相加II , 383. 赎金信 ,15. 三数之和 , 18. 四数之和

题目&#xff1a;454.四数相加II 454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 …

进阶面向对象

面向对象的意义在于 将日常生活中习惯的思维方式引入程序设计中 将需求中的概念直观的映射到解决方案中 以模块为中心构建可复用的软件系统 提高软件产品的可维护性和可拓展性 类和对象是面向对象中的两个基本概念 类&#xff1a;指的是一类事务&#xff0c;是一个抽象的概…

【Python 随练】学生成绩等级划分

题目&#xff1a; 利用条件运算符的嵌套来完成此题&#xff1a;学习成绩 ≥ 90 分的同学用 A 表示&#xff0c;60-89 分之间的用 B 表示&#xff0c;60 分以下的用 C 表示。 简介&#xff1a; 在本篇博客中&#xff0c;我们将使用条件运算符的嵌套来划分学生成绩的等级。根据…

Redis安装说明(黑马程序员)

Redis安装说明&#xff08;黑马程序员&#xff09; 笔者的redis(Linux版)的下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87926624 笔者的redis图形化桌面客户端&#xff0c;下载链接地址为&#xff1a;https://download.csdn.net/download/w…

朴素贝叶斯算法

文章目录 1. 贝叶斯定理2. 朴素贝叶斯2.1 朴素贝叶斯原理2.2 朴素贝叶斯适用范围2.3 朴素贝叶斯常用模型 3. 朴素贝叶斯算法的特点4. 朴素贝叶斯的Python应用5. 源码仓库地址 1. 贝叶斯定理 先验概率&#xff1a;即基于统计的概率&#xff0c;是基于以往历史经验和分析得到的结…

【事故致因】HFACS(人因分析与分类系统)

HFACS&#xff08;人因分析与分类系统&#xff09; 1 来源2 拟解决的问题&#xff08;背景&#xff09;2 基本架构2.1 Unsafe Acts2.1.1 Errors2.1.1.1 Skill-based errors2.1.1.2 Decision errors2.2.1.3 Perceptual errors 2.1.2 Violations2.1.2.1 Routine violations2.1.2.…

数学建模竞赛国赛入场券之攻略

数学建模竞赛国赛入场券之攻略 1.团队契合度 在3天的准备时间中&#xff0c;如果是临时组建的草台班子光处理分歧可能就已经耗掉一半时间&#xff0c;最好在赛前就完成磨合&#xff0c;像一起做模拟题练练手之类&#xff0c;甲准备图论、乙准备优化方法&#xff0c;然后再一块…

linux 内存管理之五bootmem 分配器 2.4.22

内核的bootmem 分配器 又叫自举内存分配器&#xff0c;其内涵即 自己初始化自己的一个内存分配器 其初始化过程 已在 上篇[ARM 架构物理内存初始化]&#xff0c;(https://blog.csdn.net/zsj1126/article/details/116430903)介绍 本文主要关注该分配器提供的主要接口和用途 st…

系统测试工程师的岗位职责描述(合集)

系统测试工程师的岗位职责描述1 职责&#xff1a; 1、评审产品或项目需求的测试性&#xff0c;评审产品或项目开发设计的合理性。 2、根据需求进行测试规划&#xff0c;制定测试方案&#xff0c;设计测试用例; 组织测试用例评审; 3、根据测试计划进行项目测试进度和测试质量的管…

Cesium 实战 - 自定义视频标签展示视频

Cesium 实战 - 自定义视频标签展示视频 视频材质核心代码气泡框视频核心代码在线示例 在封装 Cesium 工具的时候&#xff0c;偶然发现 Cesium 支持视频材质功能&#xff0c;虽然目前项目中还没有用到&#xff0c;但是提前做了功能封装&#xff0c;以后使用的时候会方便一些。 …

强化学习从基础到进阶-常见问题和面试必知必答[1]:强化学习概述、序列决策、动作空间定义、策略价值函数、探索与利用、Gym强化学习实验

【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧&#xff08;调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍&#xff1a;【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧…

Triton教程---模型设置

Triton教程—模型设置 这是您第一次编写配置文件吗&#xff1f; 查看本指南或本示例&#xff01; 文章目录 Triton教程---模型设置最小模型配置名称、平台和后端模型交互策略解耦 最大批量大小输入和输出PyTorch 后端的特殊约定命名约定&#xff1a;张量字典作为输入&#xf…

用CSS3实现边框流动,让你的网页更有创意和个性

前言 边框流动动画是一种非常常见的效果&#xff0c;能够让网页看起来更加生动有趣。通过使用 CSS3&#xff0c;我们可以轻松地实现这种动画效果。本文将介绍如何使用 CSS3 实现边框流动效果&#xff0c;下面一起来看看吧。 实现效果 实现思路 首先我们先创建一个盒子容器&…

ENVI软件的地表温度(LST)反演教程

前言 遥感图像处理平台&#xff08;The Environment for Visualizing Images&#xff09;的软件处理技术覆盖图像数据的输入/输出、图像定标、图像增强、纠正、正射校正、镶嵌、数据融合以及各种变换、信息提取、图像分类、基于知识的决策树分类、与GIS的整合、DEM及地形信息提…