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* 是可以支持函数的链式表达,增加函数“附加值”;

            如:   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基本函数讲解的很好,而且有一些比较难以发现的问题,值得仔细研读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值