面试中的几个小问题

 

面试中的几个小问题

 

1.对stl中list封装(参考1);

2.对重要C函数实现(参考2);

 

//memset

void *memset(void *buffer, int c, int count)

{

    char* p = (char*)buffer;

    while(count--)

         *p++ = (char)c;

    return buffer;

}

//memcpy

void * memcpy(void *dst,const void *src,int count)

{

    void * ret = dst;

    while (count--)

    {

         *(char *)dst = *(char *)src;

         dst = (char *)dst + 1;

         src = (char *)src + 1;

    }

    return(ret);

}

 

//memmove

/**//*

    memmove()由src所指定的内存区域赋值count个字符到dst所指定的内存区域。

    src和dst所指内存区域可以重叠,但复制后src的内容会被更改。函数返回指向dst的指针。

    */

 

void * memmove(void * dst,const void * src,int count)

{

    void * ret = dst;

    if (dst <= src || (char *)dst >= ((char *)src + count))

    {

         while (count--)

         {

             *(char *)dst = *(char *)src;

             dst = (char *)dst + 1;

             src = (char *)src + 1;

         }

    }

    else

    {

         dst = (char *)dst + count - 1;

         src = (char *)src + count - 1;

         while (count--)

         {

             *(char *)dst = *(char *)src;

             dst = (char *)dst - 1;

             src = (char *)src - 1;

         }

 

    }

    return(ret);

}

 

char * __cdecl strcpy(char * dst, const char * src)

{

    char * cp = dst;

    while( *cp++ = *src++ )    ;        

    return( dst );

}

 

char * strcat (char * dst, char * src)

{

    char * cp = dst;

    while( *cp )

         ++cp;   /**//* Find end of dst */

    while( *cp++ = *src++ )

         /**//* Copy src to end of dst */

         return( dst );

}

 

int strlen(const char * str )

{

    const char *p = str;

    while( *p++ ) ;

    return( (int)(p - str - 1) );

 

}

//strcmp

int strcmp(const char *string1, const char *string2 )

{

    int ret;

    while(    ( ret=*(unsigned char *)string1++ -*(unsigned char *)string2++)==0 &&   string1  );

    return ret;

}

 

3.用C 写一个输入的整数,倒着输出整数的函数,要求用递归方法

 

void fun( int nNum)

{

    printf( "%d", nNum%10 );

 

    nNum /= 10;

 

    if(nNum<=0)

    {

         return;

    }

 

    fun( nNum );

}

 

4.其他

 

参考

1.   Clist封装函数

STL介绍 http://blog.csdn.net/sunny_chenpeng/article/details/5449426

介绍Clist  http://blog.csdn.net/dream199029/article/details/4221577

封装 http://www.cppblog.com/changshoumeng/archive/2010/05/08/114822.aspx

  1. C函数重写 http://www.cppblog.com/changshoumeng/archive/2010/05/08/114822.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值