【发布时间】:2017-04-24 02:48:17
【问题描述】:
我已经看到了 strlen 使用指针的标准实现:
int strlen(char * s) {
char *p = s;
while (*p!='\0')
p++;
return p-s;
}
我得到了这个作品,但是当我尝试使用另外 3 种方法(现在正在学习指针算术)来做到这一点时,我想知道它们有什么问题?
-
这有点类似于书中的内容。这是错的吗?
int strlen(char * s) { char *p = s; while (*p) p++; return p-s; } -
虽然如果我传递一个空字符串但仍然给我 0 会是错误的,这有点令人困惑,因为 p 是预增量:(现在它返回我 5)
int strlen(char * s) { char *p = s; while (*++p) ; return p-s; } -
想通了,帖子增加并返回+1。
int strlen(char * s) { char *p = s; while (*p++) ; return p-s; }
【问题讨论】:
标签: c