吐槽一下同事的函数接口,C语言传参数的问题,有一个既是输入,又是输入出的参数?
同事写了一个函数,就是算一个文件的hash值。函数体是这样的
int calcHash(unsigned char* data,int dataLen, unsigned char hash[], int *hashLen);
然后,我照着以前他写的一个调用方法调,总是不对。最后发现,他说那个hashLen必须赋初值。
初值为要计算的hash值长度,初值是多少,他才知道hash[]数组分配的空间跟算法的是否匹配?因为有多种算法,算出的hash值长度可能不一样,虽然我们常用的都是32位的。
但是,我就很纳闷,这参数,int*不就是一个输出参数吗?怎么还对初值有要求呀?你要有几组算法,算不同的hash长度,那你多写几个函数呀
calcHash32
calcHash64
这多清楚呀!
大家说说,是我少见多怪,还是同事写得不规范呀