绣花腿代码

这次的内容纯粹是用来消磨乘车时间想出来的,基本上没有太大的实际用途,因此,华而不实,对这类无喜好的可以退出了。

功能:字符串遍历,比如给定一个字符串”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;
     }
       

如果要变的话,还有很多很多的写法,我们所做的一切事情就是,为了浪费脑细胞。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据