C语言:二十三 不用库函数/局部or全局变量写测字符串长度的函数
int my_strlen(char *strDest)
{
assert(strDest != NULL); //注释①
if('\0' == *strDest)
return 0;
else //注释②
return (1+my_strlen(++strDest));
}
注释①:
assert是个宏,不是库函数,仅在debug版本中起作用,在release版本中会被编译器优化掉不起任何作用,如果assert后跟的表达式为False,将终止程序运行并报错。
注释②:
采用递归调用自身的方式完成函数功能。
my_strlen()函数还可以写的更简洁
int my_strlen(char *strDest)
{
assert(strDest != NULL);
return (strDest == '\0') ? 0:(1+my_strlen(++strDest));
或者
return (*strDest) ? (1+my_strlen(++strDest)) : 0;
}
{
assert(strDest != NULL); //注释①
if('\0' == *strDest)
return 0;
else //注释②
return (1+my_strlen(++strDest));
}
注释①:
assert是个宏,不是库函数,仅在debug版本中起作用,在release版本中会被编译器优化掉不起任何作用,如果assert后跟的表达式为False,将终止程序运行并报错。
注释②:
采用递归调用自身的方式完成函数功能。
my_strlen()函数还可以写的更简洁
int my_strlen(char *strDest)
{
assert(strDest != NULL);
return (strDest == '\0') ? 0:(1+my_strlen(++strDest));
或者
return (*strDest) ? (1+my_strlen(++strDest)) : 0;
}