C语言中的关键字与标识符详解

1. 关键字(keyword)

定义:
关键字是C语言中预定义的一组特殊字符串,它们具有特定的含义和用途。在程序编译过程中,编译器会根据这些关键字执行相应的操作。

特点:
所有C语言的关键字均采用小写字母形式。

举例:
例如,在一个简单的"HelloWorld"案例中,我们可能会遇到intreturn等关键字。int用于声明整型变量,而return用于从函数返回值。

C语言传统关键字(ANSI C):

  • 控制语句关键字包括 break, case, continue, default, do, else, for, goto, if, return, switch, while
  • 数据类型关键字有 char, enum, double, long, float, int, short, signed, struct, unsigned, union, void
  • 存储类型关键字包括 auto, extern, register, static
  • 其他关键字包括 const, sizeof, typedef, volatile

随着标准的发展,C99增加了5个关键字:inline, restrict, _Bool, _Complex, _Imaginary;C11又新增了7个关键字:_Alignas, _Alignof, _Atomic, _Static_assert, _Noreturn, _Thread_local_Generic

说明:

  • ANSI C、C99和C11标准在大多数情况下可以兼容使用,无需过分关注版本差异。
  • 对于关键字的学习,建议结合实践逐步掌握,不必刻意死记硬背。

2. 标识符(Identifier)

定义:
在C语言中,标识符是指用户为变量、函数、数组名、结构体等编程要素所起的名字,它由一系列字符组成。

命名规则:

  • 标识符只能包含字母(大小写均可)、数字(但不能作为首字符)以及下划线。
  • 不得与C语言的关键字相同,尽管标识符内可包含关键字。
  • C99和C11允许更长的标识符,但编译器只识别前63个字符,超出部分会被忽略。
  • 标识符不允许包含空格。
  • C语言严格区分大小写,因此相同的单词但大小写不同会被视为不同的标识符。

命名建议:

  • 命名时应力求有意义,做到“见名知意”,如sumnamemaxyeartotal等。
  • 避免仅通过大小写来区分不同的标识符,以免混淆。
  • 尽量避免在标识符中使用数字编号,除非逻辑上确实需要编号。
  • 按照约定,常量(如宏定义、枚举常数、只读变量)通常用全大写字母命名,并使用下划线分隔单词,如TAX_RATE
  • 为了防止与系统内部使用的标识符冲突,建议避免使用以下划线开头的标识符,特别是双下划线或单下划线加大写字母开头的名称。
  • 下划线通常用于连接较长的变量名,提高可读性,如max_classes_per_student
  • 在多单词组成的变量名和函数名中,推荐采用驼峰命名法(小驼峰),即第一个单词首字母小写,后续每个单词首字母大写,如stuAgetankShotGame

合法与非法标识符示例:

// 合法的标识符
a, BOOK1, _sun, MAX_SIZE, Mouse, student23, Football, FOOTBALL, max, _add, num_1, sum_of_numbers// 非法的标识符
$zj, 3sum, ab#cd, 23student, Foot-baii, s.com, b&c, j**p, book-1, tax rate, don't

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

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

相关文章

2024年数学建模美赛能用chatGPT之类的AI吗?官方给了明确规定!

这两年chatGPT等大语言模型火了,能对话,自然也能回答数学建模方面的问题。 那美赛能不能用这些AI呢?2024年美赛官方对chatGPT等的使用做出了明确的规定(其中的VI. Contest Instructions部分): https://ww…

JavaScript高级程序设计读书记录(六):定型数组,Map

1. 定型数组 定型数组(typed array)是 ECMAScript 新增的结构,目的是提升向原生库传输数据的效率。实际上,JavaScript 并没有“TypedArray”类型,它所指的其实是一种特殊的包含数值类型的数组。 1.1 历史 随着浏览器…

LaTex引用字体变色

使用下面这条语句进行修改。 ‘citecolor’改变参考文献颜色, ‘linkcolor’改变图标公式引用的颜色, ‘urlcolor’ 文本网站超链接颜色。 \usepackage[colorlinks,bookmarksopen,bookmarksnumbered,citecolorblue, linkcolorblue, urlcolorblue]{hyper…

数据库-简单表的操作And查看表的结构

查看表的结构 desc 表名;mysql> use study; Database changed mysql> create table Class(class_id int ,class_name varchar(128),class_teachar varchar(64)) ; Query OK, 0 rows affected (0.06 sec) mysql> show tables; ----------------- | Tables_in_study…

杨中科 ASP.NET Core前后端分离开发

一、 前后端分离 1、传统MVC开发模式: 前后端的代码被放到同一个项目中,前端人员负责编写页面的模板,而后端开发人员负责编写控制器和模型的代码并且“套模板”。 缺点: 互相依赖,耦合性强,责任划分不清。 2、主流的“前后端分离…

【openGauss服务器端工具的使用】

【openGauss服务器端工具的使用】 gs_checkperf openGauss 不仅提供了gs_checkperf工具来帮助用户了解openGauss的负载情况。 使用数据库安装用户登录服务器,执行如下命令进行查看数据库性能: 简要信息展示:[ommopengauss03 ~]$ gs_checkperf…

跨平台的传输协议@WebDav协议@windows系统配置WedDav服务器@局域网内的WebDav传输系统

文章目录 WebDav协议基本信息启用必要的windows功能启动站点管理器IIS站点根目录访问权限设置站点的功能设置端口通行防火墙IMME文件类型(文件后缀)其他设备登录和访问本机的WebDav服务站点 小结优点缺点 refs WebDav 协议基本信息 来自wikipedia:基于Web的分布式编写和版本控…

借名买房合同的效力

此前司法实践对借名买房合同效力的认定较为统一,即借名买房合同无效主要系因行为人恶意串通、通谋虚伪意思表示,或者借名购买的房屋为经济适用房等保障性住房。借名买房鲜少因悖俗而无效。2020年12月26日最高人民法院作出(2020)最…

协程池与新脚本语言

今天的主人公名为——Melang。 这是一款使用C语言开发的“新”的脚本语言,然而其已经默默问世了6年之久。 下面笔者就带你走进Melang world。 What is Melang Melang是一款协程并发脚本语言。它是一款解释型,而非编译型语言。 在Melang中&#xff…

Tmux 使用小记

本文参考自 阮一峰老师Tmux 使用教程[1] Tmux,不仅仅是分屏那么简单。。。 与tmux类似的工具是screen 会话管理 将窗口与会话"解绑" 对于没有图形界面只有shell的场景(如服务器),尤其有用..这是其最核心解决的问题(窗口管理啥的只能算锦上添花的辅助功能)…

代码随想录算法训练营第20天 | 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

目录 654.最大二叉树 💡解题思路 💻实现代码 617.合并二叉树 💡解题思路 递归 💻实现代码 700.二叉搜索树中的搜索 💡解题思路 递归法 迭代法 💻实现代码 98.验证二叉搜索树 💡解题…

pod进阶版(1)

pod的相关知识 k8s的pad重启策略: Always deployment的yaml文件只能是Always pod的yaml三种模式都可以。 Onfailure:只有异常退出状态码非0才会重启。正常退出不重启。 Never:非正常退出和非正常退出都不重启。 容器的退出了pod才会重启。 pod可以有多个容器&…

实战:使用docker容器化服务

本文介绍使用docker安装mysql和redis,通过这两个的实战,了解一般的安装容器化服务的流程,体会服务容器化的好处 1.使用docker安装MySQL docker 拉取 mysql 镜像 docker pull mysql:5.7运行 mysql 镜像 docker run -p 3306:3306 --name mysql…

spring Security源码讲解-WebSecurityConfigurerAdapter

使用security我们最常见的代码: Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin().permitAll();http.authorizeRequests().antMatcher…

为什么我国的计算机教育那么差?

建议看看计算机科学速成课,一门很全面的计算机原理入门课程,短短10分钟可以把大学老师十几节课讲不清楚的东西讲清楚!整个系列一共41个视频,B站上有中文字幕版。 每个视频都是一个特定的主题,例如软件工程、人工智能、…

C++:ifstream通过getline读取文件会忽略最后一行空行

getline是读取文件的常用函数,虽然使用简单,但是有一个较容易被忽视的问题,就是文件最后一行空行会被忽略。 #include <iostream> #include <fstream> #include <string> using namespace std;void readWholeFileWithGetline(string fileName) {string t…

设计模式的艺术P1基础—2.1 uml概述

设计模式的艺术P1基础—2.1 uml概述 设计模式的艺术P1基础—第2章 UML类图与面向对象设计原则 UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明&#xff0c;而模式结构又是设计模式解法的核心组成部分。学一个设计模式&#xff0c;如果不能绘制和理解其结构图&am…

顺序表实现(下)(C语言)

几道相关例题,帮助大家更好理解顺序表. 文章目录 前言 一、顺序表二、创建顺序表并初始化三.删除非递减顺序表L中的重复元素四.在非递减顺序表中删除[s,t]之间的元素五.设计算法逆置顺序表L,并将序列L循环左移六.顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中…

数据库系统原理总结之——数据库系统概述

数据库系统概述 第一章 数据库系统概述一、数据库基本概念二、数据库管理技术的发展三、数据库系统的三级模式结构四、数据库系统的运行与应用结构五、数据模型的分类 第一章 数据库系统概述 一、数据库基本概念 数据&#xff08;Data&#xff09; &#xff1a;描述事务的符号…

12306 抢票的糟糕体验

又到了一年一度的 12306 抢票时&#xff0c;和秒杀&#xff0c;抢购一样&#xff0c;这种事往往给人的体验非常差&#xff0c;去年经历过上海四月的应该深有感触。 我此前论述过随着网络带宽增加的速度超过 buffer 容量增加的速度&#xff0c;端到端拥塞控制将越来越不起作用&a…