我目前正在研究一個字符串度量庫,它計算字符串之間的各種距離並報告字符串彼此之間的相似程度。例如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
?或者我應該假設使用庫的程序員在傳遞指針之前會檢查嗎?