【发布时间】:2015-09-22 14:30:58
【问题描述】:
我现在正在学习Comp Sci 课程,我的老师在黑板上写的一个例子如下 - 这个概念是创建一个string 长度函数,它返回一个带有字符串的size_t长度使用指针算法。我理解这个概念,但每次我尝试这个例子时,我的结果都是0。
using namespace std;
size_t strlen(const char* str);
int main(int argc, char** argv) {
char test[] = {'h','e','l','l','o','\0'};
cout << strlen(test);
return 0;
}
size_t strlen(const char* str){
int idx = 0;
for( ; *str; str++, idx++){
return(idx);
}
}
如果有人能提供有关问题所在的见解,我将不胜感激。
谢谢! :)
【问题讨论】:
-
你
return在循环的第一次迭代中。我的猜测是,您错误地从板上复制了代码。很可能是for( ; *str; str++, idx++); return idx;,这根本不是一回事。所有这些都表明,事实上你可能不太了解这个概念。 -
P.S.您实际上并没有在此代码中使用指针 算术。
-
警惕
NULL/nullptr输入。 -
还要小心使用名称
strlen。strlen的一些实现是macros,因此如果包含string.h标头,则strlen的所有使用都将替换为strlen宏。结果真的很奇怪的错误消息。