【发布时间】:2017-04-20 23:23:40
【问题描述】:
我刚刚开始学习编码(特别是 C)。 在编写一个计算数组字符以用于学习目的的函数时,我在质疑自己(我对此非常确定),是否有可能简化此迭代:
int stringlength(char* s)
{
int i = 0;
while (s != NULL && *(s + i) != '\0')
i++;
return i;
}
我想将i++ 保留在迭代本身中(for 循环?)。
我很感激你们给我的任何暗示。如果您发现我做错的无关问题 - 请告诉我。
【问题讨论】:
-
您可以将
s != NULL的检查提取到函数开头的if条件 -
请注意,名称以
strx开头的函数(其中x是小写字母)是个坏主意,因为整个名称空间都为标准库保留。这个特殊的函数应该是安全的,尽管我们已经有了strlen()。 :) -
感谢您的提示 :) 考虑提取 {s != NULL},我是否仅出于性能原因提取此检查(不检查数组的每个字符是否相同)?