【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )

简介: 【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )

文章目录

一、C 项目开发代码规范





一、C 项目开发代码规范


上一篇博客 【C 语言】字符串模型 ( 键值对模型 ) 中 , 完成了字符串的 键值对 查找功能 , 代码不太规范 ;



C 项目开发代码规范 :


形参合法性判断 : 函数入口处 , 判断函数形参是否为空 , 如果为空 , 直接返回 ;

int get_value(char *key_value, char *key, char *value, int *value_len)
{
    // 任何函数调用前 , 先判定函数形参正确性
    if(key_value == NULL || key == NULL || value == NULL || value_len == NULL)
    {
        printf("key_value == NULL || key == NULL || value == NULL || value_len == NULL\n");
        return -1;
    }
}


函数返回值局部变量 : 函数中 , 建议定义一个 局部 返回值变量 , 该变量要经常使用 , 基本上每一步操作 , 都要有返回值 , 针对每个返回值都要有变量接收 ;

 

// 各种函数执行返回值
    int ret = 0;
    // III . 将 = 字符后面的空格去除
    ret = trim_space(p, value);
    if(ret != 0)
    {
        printf("error : trim_space %d \n", ret);
        return ret;
    }


函数中不用全局变量 : 在函数中 , 尽量 不使用全局变量 , 一旦涉及到全局变量 , 该函数肯定是线程不安全的 ; 参考 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 ) 博客 , 该博客中就使用了全局变量存放函数结果 , 不支持多线程访问 ;

函数中使用局部变量接收形参 : 函数形参中的指针变量 , 不要直接使用 , 如果涉及到修改指针指向的操作 , 建议 创建 函数 中 局部指针变量 接收该 形参指针变量 ;

int get_sub_count(char *main_str, char *sub_str, int *sub_count)
{
    // 为了不修改 函数 形参 的值 , 使用指针变量接收 函数形参
    char *main_str_tmp = main_str;
    char *sub_str_tmp = sub_str;
}


函数返回值 : 一般返回 int 值 , 用于 标记函数执行是否成功 , 如果失败 , 返回错误码 ;

形参作返回值 : 函数的实际返回值 , 都是通过 函数形参指针 , 对 形参指针 进行 间接赋值 完成 ;

形参返回值处理 : 返回值不要直接修改 , 先定义临时局部变量保存返回值 , 最后执行完毕 , 再将返回值 通过 间接赋值 赋值给 形参中的 返回值指针 指向的 内存地址 ;

 

// 保存非空字符串长度 , 局部临时变 , 计算结果
    int count_tmp = 0;
    // 计算结果
    count_tmp = j - i + 1;
    // 通过间接赋值设置返回值
    *count = count_tmp;


目录
相关文章
|
1天前
|
C语言
c语言回顾-函数递归(上)
c语言回顾-函数递归(上)
20 2
|
3天前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
12 3
|
6天前
|
存储 程序员 编译器
C语言——动态内存管理与内存操作函数
C语言——动态内存管理与内存操作函数
|
1天前
|
C语言 C++
c语言回顾-内存操作函数
c语言回顾-内存操作函数
7 0
|
1天前
|
C语言
c语言回顾-函数递归(下)
c语言回顾-函数递归(下)
6 0
|
3天前
|
Serverless C语言
C语言函数基础
C语言函数基础
16 0
|
3天前
|
存储 C语言 C++
来不及哀悼了,接下来上场的是C语言内存函数memcpy,memmove,memset,memcmp
本文详细介绍了C语言中的四个内存操作函数:memcpy用于无重叠复制,memmove处理重叠内存,memset用于填充特定值,memcmp用于内存区域比较。通过实例展示了它们的用法和注意事项。
14 0
|
6天前
|
C语言
C语言字符(串)函数
C语言字符(串)函数
|
7天前
|
C语言
C语言函数返回值详解
本文详细解析了C语言中函数返回值的概念与应用。从函数的基本定义入手,深入探讨了不同类型返回值的作用及意义,并提供了实用的编程示例,帮助读者更好地理解和使用函数返回值。通过本文,你将掌握如何有效利用返回值优化代码结构与功能实现。
|
9天前
|
算法 搜索推荐 C语言
【C语言篇】深入理解指针4(模拟实现qsort函数)
【C语言篇】深入理解指针4(模拟实现qsort函数)
17 2