strcmp strlen 函数 笔记

0 background

    在大一/大二的时候有次考试问到了这个函数,昨天因为喝了咖啡3点半迟迟无法入睡便看了一下这个函数,结果让人更兴奋了。这里记录一下不会的知识,和函数的要点。


1 strcpy    

#include <assert.h>
char* strcpy(char* dest, const char* src){
	assert((dest != NULL) && (src != NULL));
	//throw "Invalid argument(s)"; 
	char* r = dest;
	while((*r++ = *src++) != '\n');
	return dest;
}

    Q&A   Q:

        1    函数返回char *;

        2    原串用到了 const char*;

        3    对原串目的串的异常判断;


    Q&A   A:

        1    返回char* 是可以支持函数的链式表达,增加函数“附加值”;

扫描二维码关注公众号,回复: 2715726 查看本文章

            如:   char* newstr = strcmp(new char[10], oldstr);

                      char*  s = void *memset(void *s, int ch, size_t n);

                    用比较少的语句可以完成串的分配空间,指针赋值操作。

        2    形参为常量指针,保证代码可读性和函数质量,意为在函数中此变量不需更改。

        3    异常判断为体现严谨之处,另外如果不用库函数可以用 throw 来抛出异常


2 strlen

    

#include <assert.h>
int strlen(const char* src){
	assert(src != NULL);
	int len = 0;
	while(*src++ != '\0'){
		len ++;
	}
	return len;
}

    Q&A   :

        这里都比较简单了,注意异常判断即可。


3 reference

    https://blog.csdn.net/fycy2010/article/details/47709179

    这一篇关于很多c基本函数讲解的很好,而且有一些比较难以发现的问题,值得仔细研读。

猜你喜欢

转载自blog.csdn.net/mistakk/article/details/80277430