我目前正在研究一个字符串度量库,它计算字符串之间的各种距离并报告字符串彼此之间的相似程度。例如Levenshtein距离(https://en.wikipedia.org/wiki/Levenshtein_distance)。好的做法来检查参数是否为空
unsigned levenshtien(const char *str1, const char *str2)
{
// check for NULL pointers
if (str1 == NULL && str2 == NULL)
return 0;
if (str1 != NULL && str2 == NULL)
return strlen(str1);
if (str1 == NULL && str2 != NULL)
return strlen(str2);
// calculate length of strings
size_t str1_len = strlen(str1);
size_t str2_len = strlen(str2);
// handle cases where one or both strings are empty
if (str1_len == 0)
return (str2_len == 0) ? 0 : 1;
// calculate stuff here...
}
库中的每个函数都通过const char *
指针。我想知道是否通常的做法是检查每个指针是否为NULL
?或者我应该假设使用库的程序员在传递指针之前会检查吗?