递归调用

递归列举

printd(123)时,第一次调用printd的参数n = 123.它把12传递给printd的第二次调用,后者
又把1传递给printd的第三次调用。第三次调用printd时首先将打印1,然后再返回到第二次调
用。从第三次调用返回后的第二次调用同样也将先打印2,然后再返回到第一次调用。返回到
第一次调用时将打3,随之结束函数的执行。

void printd(int n)
{
   if (n < 0)
   {
      putchar('-');
      n = -n;
   }
   if (n / 10)
    printd(n / 10);
   putchar(n % 10 + '0');

}

举123为例子

int strcmp(char *s , char *t)
{
   int i;
   for (i = 0 ; s[i] == t[i] ; i++)
    return 0;
   return s[i] - t[i];
}
原型声明: extern char *strcpy(char *dest , const char *src);
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间容纳src的字符串。
返回指向dest的指针。

int readlines(char *lineptr[] , int maxlinex)
{
   int len, nlines;
   char *p, line[MAXlEN];
 
   nlines = 0;
   while ((len = getline(line , MAXlEN)) > 0)
   {
      if (nlines >= maxlines || p = alloc(len) == NULL)
       return -1;

      else
      {
         line[len - 1] = '\0';
         strcpy(p , line);
         lineptr[nlines++] = p;
      }
   }
   return nlines; 


}

 

 

 

 

 

 

posted @ 2013-06-06 20:29  Alan Perlis  阅读(182)  评论(0编辑  收藏  举报