这次的内容纯粹是用来消磨乘车时间想出来的,基本上没有太大的实际用途,因此,华而不实,对这类无喜好的可以退出了。
功能:字符串遍历,比如给定一个字符串”abc”,依次输出’a’,’b’,’c’。
代码一:我最常看到的:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
int i = 0;
for( i = 0; i < strlen(str); i++)
printf("%c\n", str[i]);
return 0;
}
上述代码的一个问题是,总是调用strlen函数(不考虑优化),于是有了下面的变种:
代码二:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
int i = 0;
int len = strlen(str);
for( i = 0; i < len; i++)
printf("%c\n", str[i]);
return 0;
}
以及代码三:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
int i = 0;
int len=strlen(str);
while(i
现在要求,不调用字符串长度函数。假设该函数效率太低。代码再改:
代码四:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
while(*str)
printf("%c\n", *str++);
return 0;
}
上述代码虽然实现了功能,但修改了字符串指针。再变代码五:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
int i = 0;
while(str[i])
printf("%c\n", str[i++]);
return 0;
}
还有代码六:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
int i = 0;
while(i[str])
printf("%c\n",i++[str]);
return 0;
}
上述代码的变种,代码七:
#include
int main(int argc, char *argv[])
{
char* str = "abc";
int i = 0;
while(printf("%c\n",i++[str]),i[str]);
return 0;
}
如果要变的话,还有很多很多的写法,我们所做的一切事情就是,为了浪费脑细胞。