![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
文章平均质量分 54
liam1122
人还不错!
展开
-
重写string.h中的字符串操作函数--strncpy
这是我第一次写博客,文中可能有些错误或者需要继续改进的地方,希望大家能够帮我发现不足啊,呵呵。本文重写了string.h中的一些函数,参考了linux/lib/string.c中的函数原型和MSDN中函数的定义。虽然是重写,但是改变的并不多,因为linux中的定义基本是最优的,我曾经对有些函数能否实现其功能产生过怀疑,但是结果可能并非我所猜测,所以每个函数我都会在VC下试验一下,检验其执原创 2007-12-06 14:22:00 · 989 阅读 · 0 评论 -
重写string.h中的字符串操作函数--strlen,strlen 与sizeof的区别
函数原型:size_t strlen(const char *str)返回值:返回字符串中字符的个数,不包括结束符/0。如果没有返回值表示出现错误;参数说明:str:以/0为结束符的字符串。函数实现:size_t strlen(const char *str){ assert(NULL != str); const char *tmp = str; for(;tmp != ;原创 2007-12-24 18:33:00 · 1402 阅读 · 0 评论 -
C++中的位拷贝和值拷贝
为了便于说明我们以String类为例:首先定义String类,而并不实现其成员函数。Class String{public: String(const char *ch=NULL);//默认构造函数 String(const String &str);//拷贝构造函数 ~String(void); String &operator=(const String &原创 2007-12-25 15:59:00 · 7909 阅读 · 11 评论 -
由assert的定义所想到的
最近看到一篇讨论关于assert该如何定义的帖子,发现里面由很多的玄机啊,结果仔细的研究发现了不少小的知识点啊。首先写一个assert宏的定义: #ifdef NDEBUG #define assert(exp) ((void)0)#else#define assert(exp)/ do{/ if(!exp)/ {printf("assert原创 2007-12-20 15:01:00 · 754 阅读 · 0 评论 -
重写string.h中的字符串操作函数--strchr
函数原型:char *strchr(const char *str, char ch);返回值:返回一个指针,该指针指向字符ch第一次出现的位置,如果在str中未找到ch ,则返回NULL参数说明:str:以/0结尾的字符串。ch:待查找的字符函数说明: 另一种形式为:char *strchr(const char *str, int n);字符串结束符也包含在查找之列原创 2007-12-18 14:31:00 · 787 阅读 · 0 评论 -
重写string.h中的字符串操作函数--memmove、memcpy
函数原型:void *memmove(void *dest, const void *source, size_t count)返回值说明:返回指向dest的void *指针参数说明:dest,source分别为目标串和源串的首地址。count为要移动的字符的个数函数说明:memmove用于从source拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够原创 2007-12-20 11:07:00 · 1078 阅读 · 0 评论 -
重写string.h中的字符串操作函数--strncmp
函数原型:int strncmp(const char *str1, const char *str2, size_t n);返回值:返回整形值:如果str1 > str2, 返回值大于0;如果str1= str2,返回值等于0;如果str1参数说明:str1,str2为要比较的字符串,n为要比较字符串的个数。函数说明:按照字母表的字母顺序比较str1和str2的前n个字符,要考虑大小原创 2007-12-18 14:13:00 · 1057 阅读 · 0 评论 -
重写string.h中的字符串操作函数--strcmp
函数原型:int strcmp(const char *dest, const char *source) ;返回值:返回整数值,如果dest > source,则返回值大于0,如果dest = source,则返回值等于0,如果dest 参数说明:都是以/0为结束符的字符串实现;int strcmp(const char *dest, const char *source原创 2007-12-14 18:15:00 · 1053 阅读 · 1 评论 -
重写string.h中的字符串操作函数--strncat
函数原型:char *strncat(char *dest, const char *source, size_t size)返回值: 返回指向目标串dest首地址的指针,返回NULL表示出错。参数说明: dest : 以/0为结束符的字符串 source:以/0为结束符的字符串 size:要连接到dest末尾的字符的个数函数作用:把s原创 2007-12-14 18:02:00 · 847 阅读 · 0 评论 -
重写string.h中的字符串操作函数--strcat
函数原型:char *strcat(char *dest, const char *source)返回值:返回值目标串的首地址,如果操作失败则返回NULL传输说明: dest: 以/0为结束符的字符串 source:以/0为结束符的字符串作用:将字符串source连接到dest字符串的末尾,并将dest的结束符/0覆盖。在执行连接的过程中,并不会检原创 2007-12-13 13:25:00 · 913 阅读 · 0 评论 -
C/C++语言声明的优先级
C/C++声明的规则:步骤:1、声明从名字开始读取,然后按优先级顺序依次读取。2、优先级顺序是: (1)声明中括号括起来的部分 (2)后缀操作符,括号()表示是个函数,方括号【】表示是个数组 (3)前缀操作符*, 表示“指向 ----的指针”3、如果是const 和volatile关键字放在类型标识符的前面,那么它作用于类型操作符,比如“指向int类型const变原创 2007-12-11 13:59:00 · 913 阅读 · 0 评论 -
数组和指针的区别
参考:林锐博士,高质量C/C++编程指南 首先对于编译器而言,一个数组是一个地址,一个指针是一个地址的地址。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。例如:void main(void){int a[10];a ++;//error, a is left valu原创 2007-12-10 15:05:00 · 1122 阅读 · 0 评论 -
重写string.h中的字符串操作函数--strspn和strcspn
函数原型:size_t strspn(const char *string, const char *strcharset) 返回值说明:返回一个整形值,指明字符串strcharset中开头的字符有多少指定的字符。如果返回0说明,在字符串string中未找到指定的字符。 参数说明: string:以/0结尾的字符串。 strcharset:指定的字符串,以/0结尾。 函数说明:原创 2007-12-29 10:30:00 · 1102 阅读 · 0 评论