### C语言变量名命名规则详解 #### 一、程序风格 C语言的程序风格对于保持代码的一致性和可读性非常重要。以下是一些常见的风格指南: 1. **阶梯层次组织程序代码**: - 代码的缩进通常采用每层次4个空格的方式。 - 大括号(`{}`)的使用应保持一致,如将其放置在新的一行上,并且相匹配的大括号应在同一列对齐。 - 对继行(即在大括号后的第一行代码)需要再缩进4个空格。 2. **提示信息字符串的位置**: - 在程序中使用的提示信息字符串,为了避免硬编码,应该被定义在资源文件中,这样可以方便地支持多语言版本的开发。 - 仅用于调试目的的信息可以直接在代码中声明,但正式发布的版本中应移除这些信息。 3. **变量定义位置**: - 尽量将变量的定义放在函数的开始位置,这有助于快速了解函数使用了哪些变量。 #### 二、命名规则 变量命名规则在编程中非常重要,它能够提高代码的可读性和可维护性。以下是C语言中推荐的一些命名规则: 1. **变量名的命名规则**: - **匈牙利命名法**:变量名由两部分组成,第一部分表示变量的数据类型,第二部分表示变量的意义。例如,`bIsParent`代表一个布尔类型的变量,表示是否为父级。 - 常见的前缀示例: - `bool(BOOL)` 类型的变量以 `b` 开头,如 `bIsParent`。 - `byte(BYTE)` 类型的变量以 `by` 开头,如 `byFlag`。 - `short(int)` 类型的变量以 `n` 开头,如 `nStepCount`。 - `long(LONG)` 类型的变量以 `l` 开头,如 `lSum`。 - `char(CHAR)` 类型的变量以 `c` 开头,如 `cCount`。 - `float(FLOAT)` 类型的变量以 `f` 开头,如 `fAvg`。 - `double(DOUBLE)` 类型的变量以 `d` 开头,如 `dDelta`。 - `void(VOID)` 类型的变量以 `v` 开头,如 `vVariant`。 - `Unsigned int(WORD)` 类型的变量以 `w` 开头,如 `wCount`。 - `Unsigned long(DWORD)` 类型的变量以 `dw` 开头,如 `dwBroad`。 - `HANDLE(HINSTANCE)` 类型的变量以 `h` 开头,如 `hHandle`。 - `DWORD` 类型的变量以 `dw` 开头,如 `dwWord`。 - `LPCSTR(LPCTSTR)` 类型的变量以 `str` 开头,如 `strString`。 - 以0结尾的字符串类型变量以 `sz` 开头,如 `szFileName`。 2. **指针变量命名规则**: - 一重指针变量:`"p"` + 变量类型前缀 + 变量意义,如 `pfStat` 表示一个指向 `float` 类型的指针。 - 二重指针变量:`"pp"` + 变量类型前缀 + 变量意义,如 `ppfStat` 表示一个指向 `float` 指针的指针。 - 三重指针变量:`"ppp"` + 变量类型前缀 + 变量意义。 3. **特殊变量命名规则**: - **全局变量**:以 `g_` 开头,如 `g_lFailCount`。 - **静态变量**:以 `s_` 开头,如 `s_plPrev_Inst`。 - **成员变量**:以 `m_` 开头,如 `m_lCount`。 4. **枚举类型变量命名**: - 枚举类型变量以枚举名或其缩写作为前缀,并全部大写,如 `EMDAYS_MONDAY`。 5. **结构体、联合体、类变量命名**: - 结构体以 `S` 开头,如 `ScmNPoint`。 - 联合体以 `U` 开头,如 `UcmLPoint`。 - 类以 `C` 开头,如 `CcmFPoint`。 - 推荐使用类模板来定义结构,以便于未来的扩展。 6. **常量命名**: - 常量名全部大写,用英文表达其含义,如 `CM_FILE_NOT_FOUND`。 7. **函数命名**: - 函数名尽量用英文表达功能,遵循动宾结构,且长度不少于8个字符,如 `cmGetDeviceCount`。 8. **函数参数规范**: - 参数命名遵循变量命名规范。 - 传递大结构时使用指针或引用方式。 - 入口参数前加 `const` 标志,以区分入口和出口参数。 以上就是C语言变量名命名规则及其相关细节的详细介绍。通过遵循这些规则,可以大大提高代码的清晰度和可维护性。
- 粉丝: 2
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip