您的位置:首页 > 编程语言 > C语言/C++

cpp复习3-字符串操作

2014-09-22 10:31 162 查看
1strcpy的实现

#include<cassert>

 char * strcpy(char * strDest, const char *strSrc){

assert(strDest && strStr);

char *cp = strDes;

while(*cp++ = *strSrc++)

   ;

return strDest;

}

2 strlen实现

int strlen(const char* str){

   assert(str);

   int len = 0;

   while(*str ++)

       len ++;

    return len;

}

3 strcat拼接

char * strcat(char * strDest, const char*strSrc){

   assert(strDest && strSrc);

   char *pd = strDest;

   while(*pd ++);

   while(*pd++ = *strSrc++);

   return strDest;

}

4 strcmp

//字符串比较
int strcmp(const char *s, const char *t)
{
    assert(s != NULL && t != NULL);
    while(*s && *t && *s == *t)
    {
        ++ s;
        ++ t;
    }
    return (*s - *t);
}

5 定义String类

class String{

    public:

        String(const char * str =NULL);

    String(const String &  another);

~String();

String& operator = (const String &rhs);

private:

char * m_data;

};

•new delete与mallocfree 的联系与区别?
–都是在堆(heap)上进行动态的内存操作。
–用malloc函数需要指定内存分配的字节数并且不能初始化对象,返回void*
–new 会自动调用对象的构造函数,返回指定类型指针,而且可以重载。
–delete会调用对象的destructor,而free 不会调用对象的destructor

•描述内存分配方式以及它们的区别?
–从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
–在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
– 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

判断链表有环,,快慢指针
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ string