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释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。
判断链表有环,,快慢指针
#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释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。
判断链表有环,,快慢指针
相关文章推荐
- php复习 第六天 字符串操作相关函数
- Java复习笔记(八)-----字符串操作
- C++复习之实现标准库的字符串操作函数
- Python通过练习掌握字符串常用操作和复习python常用条件判断语句
- C语言字符串操作函数用法(复习)
- js基础复习---字符串操作
- MFC中几个有用的字符串操作函数
- C语言复习之文件操作(上)
- 简单的数组操作字符串,加密可用
- C语言的字符串操作
- C#中一些字符串操作的常用用法
- SYMBIAN 字符串操作
- C#中一些字符串操作的常用用法
- C#中一些字符串操作的常用用法
- C#中一些字符串操作的常用用法
- 基于php常用函数总结(数组,字符串,时间,文件操作)
- C语言中操作字符串的一些函数源代码
- C#中一些字符串操作的常用用法
- 与 C 样式字符串相关的 CString 操作(msdn)
- C#中一些字符串操作的常用用法