【面试题】写出完整版的strcpy函数

2017-07-25  本文已影响396人  wshxj123

摘自牛客网:

char * strcpy( char *strDest, const char *strSrc )  //加入const表明是输入参数
{
    assert( (strDest != NULL) && (strSrc != NULL) ); //断言,判断是否为空
    char *address = strDest; 
    while( (*strDest++ = * strSrc++) != ‘\0’ ); 
    *address='\0';
    return address; //返回了目的地址,可实现链式操作
}

  1. const
class Point {
 …
public:
        int GetY() const;
…
}
int Point::GetY() const { //函数末尾加const
        return yVal;
}
- const放在函数声明前,则表示返回值是常量。
  1. 断言
    assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。

  2. memcpy

void* memcpy(void *dst, const void *src, size_t count)      
{      
    //安全检查  
    assert( (dst != NULL) && (src != NULL) );      
  
    unsigned char *pdst = (unsigned char *)dst;      
    const unsigned char *psrc = (const unsigned char *)src;      
  
    //防止内存重复  
    assert(!(psrc<=pdst && pdst<psrc+count));      
    assert(!(pdst<=psrc && psrc<pdst+count));      
  
    while(count--)      
    {      
        *pdst = *psrc;      
        pdst++;      
        psrc++;      
    }      
    return dst;      
}    
上一篇下一篇

猜你喜欢

热点阅读