strcpy和memcpy的区别只要在于两点:
1,memcpy要指定需要拷贝的字节数量
2,strcpy按照c-style字符串的方式来拷贝,也就是意味着他在碰到\0的时候会自动终止,而memcpy不会,他会原封不动的拷贝数据。
memcpy和memmove的区别主要在于,memmove能够正确处理起始地址和结束地址重合的情况,而memcpy不能,例子如下:
#include <iostream>
using namespace std;
main()
{
char bufa[10];
char bufb[10];
strcpy(bufa,"0123456789");
strcpy(bufb,"0123456789");
memcpy(bufa+4,bufa,6);
memmove(bufb+4,bufb,6);
cout<<bufa<<endl;
cout<<bufb<<endl;
printf("%X\n",bufa);
printf("%X\n",bufb);
for(int i=0;i<10;i++){
printf("%X",bufa[i]);
}
cout<<endl;
for(int i=0;i<10;i++){
printf("%X",bufb[i]);
}
cout<<endl;
}
例子输出的结果是:
0123012301
0123012345
E6E89870
E6E89860
C++的标准函数库是在C的基础上扩展了标准I/O和STL而得到的。C++标准在继承C++标准的时候,去掉了头文件后面的.h,然后再前面加上了c。
比如:C标准中的<stddef.h>到了C++标准当中就变成了cstddef,引用头文件的时候就由#include <stddef.h> 变成了: #include <cstddef>。
size_t就是在stddef.h中定义的,到了C++中,这个定义就到了cstddef中。
另外,C标准和C++标准都是由下面的库组成的,这些库又有不同的实现,在linux下面最常见的就是glibc,而windows下面最常见的就是Microsoft C Run-time Library
C standard library |
---|
C++ Standard Library |
---|
Standard Template Library |
C++0x |
C Standard Library |