您的位置:首页 > 职场人生

同学XX面试的一条简单面试题

2008-10-27 21:37 211 查看
不定义任何变量, 求字符串长度

这是我的实现. 并写了一个定义变量的.各执行N次, 输出结果是, 没有定义变量的比定义变量的快....



nt strlen(char* str)

{

if (*(str) != '/0')

return strlen(++str) + 1;

else

return 0;

}

int strlen2(char* str)

{

int i = 0;

while (*(str++) != '/0')

i++;

return i;

}

int _tmain(int argc, _TCHAR* argv[])

{

int start = GetTickCount();

char* a = "aksjdlaaaccC";

for (int i = 0; i < 10000000; i+=1)

{

strlen(a);

}

int end = GetTickCount();

cout<<end - start<<endl;

start = GetTickCount();

for (int i = 0; i < 10000000; i+=1)

{

strlen2(a);

}

end = GetTickCount();

cout<<end - start<<endl;



return 0;

}

结果输出:

4527

1091



我试着把strlen2改成

int strlen2(char* str)

{

int i = 0;

while (*(str++) != '/0')

i++;

return i;

}

4506

1062



本以为改了以后, 结果会有所改变, 因为我是操作指针而不是传入索引值. 原本我以为传入索引值会比操作指针慢, 但看来错了.

难道是i++??
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: