C语言-----标识符、关键字、常量、变量

2023-11-02

  这篇文章主要对C语言的标识符、关键字、常量、变量的一些细致知识点进行详细的讲解。

比如:1、标识符的命名规范,也就是常量、变量、函数名的命名规则进行规范的讲解。2、C语言的关键字列表。3、常量的定义及其分类。4、对全局变量和局部变量的细节知识点进行细致讲解及为什么要对变量进行初始化、如果没有初始化变量会如何等等进行详解。

1、标识符和关键字

1.1、标识符

  在C语言中,常量、变量、函数名称等都是标识符。我们可以将标识符看做一个代号,就像日常生活中物品的名称一样,便于我们对标识符的理解。

  标识符的名称可以由用户决定,但也不是想怎么样命名就怎么样命名,也需要遵循以下一些规则:

  (1)标识符只能由英文字母(A~Z,a~z)、数字(0~9)和下划线( _ )组成的字符串,并且其第一个字符必须是字母或下划线。如:

int MAX_LENGTH;    /*由字母和下划线组成*/

  (2)不能使用C语言中保留的关键字。对于那些是关键字,下面的关键字进行介绍的生活会列出来的。

  (3)C语言对大小写是敏感的,程序中不要出现仅靠大小写区分的标识符。如:

int x,X;     /*变量 x 与 X 容易混淆;提醒一点,一般我们定义一个变量的时候应该养成一个好的习惯,对变量进行初始化,我这里为了直观一点,我就没有对变量进行初始化了。*/

  (4)标识符应直观且可以拼读,让别人看了就明白其中的用途。标识符最好采取英文单词或其组合,也不要太复杂,且用词要准确,便于记忆和阅读。切记使用汉语拼音来命名。

  (5)标识符的长度应当符合“ min_length && max_information(最短的长度表达最多的信息)”原则。

  (6)尽量避免名字中出现数字编号,如temp1、temp2等,除非逻辑上需要编号。这是为了防止我们写程序的时候不肯为命名动脑筋而导致产生无意义的名字。

1.2、关键字

  关键字是C程序中的保留字,通常已有各自的用途(如函数名),不能用来做标识符。例如“ int、float、double;”就是错误的,会导致程序编译。因为 int、float、double等是关键字,不能用做变量名。

  下表我列出C语言中的所有关键字。

auto enum restrict unsigned
break extern return void
case float short volatile
char for signed while
const goto sizeof Bool
continue if static Complex
default inline struct Imaginary
do int switch
double long typedef
else register union

2、常量和变量

2.1、常量

  什么是常量呢?在程序中,有些数据是不需要改变的,也是不能改变的我们把这些不能改变的固定值称之为常量。由于常量的知识比较简单,下面我会介绍一些常量的分类和例子。

  (1)数值常量

#include<stdio.h>

int main()
{
    printf("123");
    return 0;
}

  运行程序,即可在命令中输出各个数值常量。

  (2)字符常量

#include<stdio.h>

int main()
{
    printf("A");
    return 0;
}

  运行程序,即可在命令中输出各个字符常量。

  注意:在C语言中,6和 ' 6 '的含义是不一样的,一个数值,可运算;一个是字符,一个符号而已。同样,' a ' 和 'A' 也是不一样的,字符区分大小写。  

  (3)字符串常量

  在hello的程序中,输出的 "hello"就是字符串常量,用双引号括起来的形式显示,其值就是双引号里面的字符串。通常把""称之为空串,即一个不包含任何字符的字符串;而" "则称之为空格串,是包含一个空格字符的字符串。二者不能等同。

   说到这里顺便来说一说 ""和''(双引号和单引号)的区别:

  如:比较"a"和'a'的不同。

  1、书写形式不同:字符串常量用双引号,字符常量用单引号。

  2、存储空间不同:在内存中,字符常量只占用一个存储空间,而字符串存储时必须有占用一个存储空间的结束标记'\0',所以 ' a ' 占用一个,而 " a " 占用两个。

  3、二者的操作功能也不相同。例如,可对字符常量进行加减运算,字符串常量则不能。

  (4)符号常量

  当某个常量引用起来比较复杂而又不经常要被用到时,可以将该常量定义为符号常量,也就是分配一个符号给这个常量,在以后的引用中,这个字符就代表了实际的常量。这种用一个指定的名字代表一个常量称之为符号常量,即带名字的常量。定义的格式如下:

#define <符号常量名> <常量>

        <符号常量名> 通常使用大写字母表示。<常量>可以是数值常量,也可以是字符常量。一般情况下,符号常量定义命令要放在主函数main()之前。

2.1、变量

  什么是变量呢?变量用于存储程序中可以改变的数据;变量可分为局部变量和全局变量。好了,下面看一段代码,来初步认识局部变量和全局变量。

#include<stdio.h>

int temp=2022;    /*全部变量*/

int main()
{
    int temp=2023;    /*局部变量*/
    printf("%d",temp);
    return 0;
}

  最后输出的结果为 2023,为什么呢?我们要记住的一点就是 当局部变量和全局变量同名时,局部变量优先使用。

(1)变量的作用域和生命周期

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

(1)局部变量的作用域是变量所在的局部范围。

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

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

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

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

(2)变量的四个基本属性

1、变量名:一个符合规则的标识符;

2、变量类型:C语言中的数据类型或者是自定义的数据类型;

3、变量位置:数据的存储空间位置。

4、变量值:数据存储空间内存放的值。

程序编译时,会给每个变量分配存储空间和位置,程序读取数据的过程,其实就是根据变量名查找内存中相应的存储空间,从其内读取值的过程。

(3)为什么要对变量的进行初始化

  为什么要初始化变量呢?变量的定义是让内存给变量分配内存空间,在分配好内存空间,程序没有运行前,变量会分配一个不可知的混乱值,如果程序中没有对其值进行赋值使用的话,势必会有引起不可预估的结果。所以,使用变量前务必要对其初始化。这样来说吧,当我们创建变量后,会向内存中申请一处空间来存储这个变量,但是这个变量没有初始化时,这块空间内存存储值不可确定(随机值)。在操作系统中,这块内存可能会残留以前程序的遗留数据(垃圾数据)。操作系统释放内存时,只会对分配的内存状态进行改变,内部遗留的数据不会改变。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言-----标识符、关键字、常量、变量 的相关文章

随机推荐

  • 80后创业故事之:兄弟散伙,创业失败

    在开始今天的故事之前 首先感谢这么多朋友关注我的文章 实在让我受宠若惊 我定倍加珍惜大家对我的支持 同时我也留意到这些天有一些朋友对我的故事也提出了一些质疑 怀疑是否杜撰 编造或者太过夸大其辞 本来我想出说一箩筐的理由来证明我所说的都是我自
  • AIGC参数量节节攀升,对存储带来的挑战如何解决?

    引言 近期 AIGC 相关产品如同雨后春笋一般不断涌现 但在技术层面 大家普遍的关注点更多集中在性能方面 却经常忽略了存储对推理和训练效率的影响 以及 AIGC 内容可能带来的合规风险 我们特邀腾讯云存储的产品负责人 崔剑老师和益企研究院创
  • 性能自动化+locust

    性能自动化 locust 仅作为个人笔记 如有雷同 请联系删除 性能测试基础 1 性能测试相关概念 性能测试 测试软件的性能表现 考量软件运行的如何 一般关注时间 效率 资源占用等情况 响应时间 应用系统从用户发出请求开始 到客户端接收到所
  • 你想知道的大数据知识都在这里

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 毋庸置疑 现如今是属于大数据 Big Data 的 革命性的时代 从社交媒体到企业 每时每刻都在产生大量的数据 无所作为 从而把这样的宝藏白白浪费掉是及其愚蠢的 企业已经学会了收集大
  • OV7670配置和调试总结

    废话后面说 先直接上OV7670寄存器的配置部分 const uint8 t OV7670 Reg 2 Frame Rate Adjustment for 24Mhz input clock 30fps PCLK 24MHz 0x11 0x
  • tomcat部署时注意修改目录路径

    原文 https blog csdn net qq 15676547 article details 81208991 每次发布war包 都会把附件给覆盖了 为了解决这个问题 我们需要把目录给修改到别处 方法如下
  • SSH远程访问AWS EC2

    步骤1 启动Amazon EC2实例 视频演示 启动AWS EC2实例 导航到Amazon EC2并开始启动新实例 在本教程中 我将使用Amazon Linux 2 AMI HVM 操作系统 创建一个没有规则的新安全组 例如MediumSG
  • 利用Selenium(爬虫)爬取物流信息,并用邮件提醒自己物流更新

    受疫情影响 快递无法全面复工 商家在过年期间又压了一堆未发货的订单 现在下单一个快递 商家迟迟无法发货 就算发了货 物流也慢的跟蜗牛一样 每天就是打开淘宝看物流信息 物流信息又没更新 关淘宝 为了节省这些时间 不在焦虑中度过 写了这么一个功
  • JAVA IO前言Comparable & Comparator & 序列化Serializable & 反序列化Deserializable

    Comparable可认为是内比较器 可比较的 是接口类 类参数为泛型对象T 通常对比的类本身需实现继承Comparable接口类的唯一方法compareTo T o 对比指标为类的一个或多个属性 对比类与Comparable接口类耦合性强
  • SQL基础教程 数据库和SQL

    目录 第一章 数据库和SQL 1 1 数据库是什么 一 数据库和数据库管理系统 二 DBMS的种类 1 2 数据库的结构 一 RDBMS的从常见系统结构 二 表的结构 1 3 SQL概要 一 SQL语句及其种类 二 SQL的基本书写规则 1
  • tomcat的Context配置项docBase和path的区别

    1 tomcat的config目录下的server xml中Context配置项docBase和path的区别如下 1 docBase是指项目ROOT所在路径 2 path是指该项目访问的路径 如
  • 9个用于本地存储JavaScript库

    The HTML5 Local Storage API part of Web Storage has excellent browser support and is being used in more and more applica
  • mysql 5.7二进制包安装

    1 上传安装安装包mysql 5 7 14 linux glibc2 5 x86 64 tar gz到 home mysqlintall目录并解压 2 建立用户mysql和组 groupadd mysql useradd r g mysql
  • Linux系统与管理 - (五)应用安装与管理❤

    自说 学习路径 RPM软件包 YUM安装 RPM与YUM的优劣 自说 在使用Linux系统的过程中我们经常需要安装和更新系统及服务 在Linux系统中软件的安装方式和模式是什么 接下来针对安装及管理作此描述 学习路径 Linux系统与管理
  • Element-Ui组件 单选框(Radio) 修改点击激活时的文本颜色,填充色和边框色

    Element Ui组件 单选框 Radio 修改点击激活时的文本颜色 填充色和边框色 官方组件显示的效果 需要的效果 直接添加样式 选中后的字体颜色 el radio input is checked el radio label col
  • 双指针、前缀和、二分、差分、递推

    维生素C吃多了会上火 个人CSDN博文目录 2022蓝桥杯 目录 前缀和 双指针 前缀和 激光炸弹 k倍区间 双指针 统计日志
  • Android的ScrollView简单使用实例(附Demo)

    目录 1 垂直滚动 Scroll 2 水平滚动 HorizontalScrollView Demo地址 https github com zGuangYuan Androidstudio example 垂直滚动 Scroll 水平滚动 H
  • Android开机流程(一)

    参考文章 Android系统开篇 一 概述 简单梳理下Andorid启动流程 一般操作系统启动流程如下图 Android系统启动流程概览 system server服务启动流程 启动过程 Loader gt Kernel gt Native
  • JSP数据交互(一)---内置对象》request(乱码解决)理解原理解决乱码问题

    Jsp内置对象之out JSp内置对象是Web容器创建的一组对象 没有进行声明创建但却可以使用out对象 不经常使用的内置对象 pageContext 内置对象的集大成者 config 指定Jsp页面初始配置的 Servlet page 当
  • C语言-----标识符、关键字、常量、变量

    这篇文章主要对C语言的标识符 关键字 常量 变量的一些细致知识点进行详细的讲解 比如 1 标识符的命名规范 也就是常量 变量 函数名的命名规则进行规范的讲解 2 C语言的关键字列表 3 常量的定义及其分类 4 对全局变量和局部变量的细节知识