函数对非法参数输入的判断需要做到什么程度?
我们开发了一套API函数库,现在在进行测试,有这样一个函数,完成对一个或多个SConfig结构对象(SConfig是我们定义的一个结构类型)的初始化工作,如下:
int InitObject
( SConfig* pObject, /* 指向待初始化的结构或结构数组 */
int Count /* 结构的个数 */
);
测试时发现,对于Count参数,传入负值时函数会发生异常错误,不过按正常逻辑,Count是不可能取小于零的数的。我认为应该加入对负值的判断,但我的同事认为没有必要,认为就象ANSI中的strncpy( char *strDest, const char *strSource, size_t count )函数在count取负值时同样会发生异常。
这个问题,我确实是不能肯定到底需要修改否,大家是如何看待的呢?
int InitObject
( SConfig* pObject, /* 指向待初始化的结构或结构数组 */
int Count /* 结构的个数 */
);
测试时发现,对于Count参数,传入负值时函数会发生异常错误,不过按正常逻辑,Count是不可能取小于零的数的。我认为应该加入对负值的判断,但我的同事认为没有必要,认为就象ANSI中的strncpy( char *strDest, const char *strSource, size_t count )函数在count取负值时同样会发生异常。
这个问题,我确实是不能肯定到底需要修改否,大家是如何看待的呢?
...全文
相关推荐
图解算法:堆、堆排序、优先队列
堆、堆排序、优先队列可以看成就是一个东西;堆是一种非常重要的数据结构,堆排序是基于堆这种数据结构实现的;优先队列可以用堆这种数据结构来实现,也可以用其他数据结构实现。优先队列可以用来实现有优先级的任务调用(一些任务在池子里等待,优先级最高的先被优先取出执行)
C++实现优先队列——最小堆,d路堆及配对堆
C++实现三种优先队列
堆——优先队列的实现
用数组表示的完全二叉树,堆是一种常用来实现优先队列的树形数据结构。堆通常以树形结构组织元素,但使用数组来存储这些元素。这种方法可以高效地管理完全二叉树的结构。以下是一个更详细的解释以及如何在C语言中实现这个概念。
堆与优先队列:从理论到应用
堆和优先队列是解决优先级相关问题的强大工具,从理论上讲,它们提供了对数级别的时间复杂度,在实践中表现出色。无论是系统编程、算法设计还是数据处理,掌握堆数据结构及其变种,都能帮助开发者设计出更高效的解决方案。
[算法]优先队列之配对堆
配对堆的核心要义在于合并,只要掌握到合并的精髓就能很快的手撸一个配对堆。由于配对堆的插入复杂度只有常数级别,在通常情况下弹出最小值的性能也会由于二叉堆(Java、Python等语言中优先队列的默认实现),所以在做Prim时会有优势。


