前言
提示:这里可以添加本文要记录的大概内容:
本文主要记录模拟实现库函数、const关键字的作用以及assert用法
提示:以下是本篇文章正文内容,下面案例可供参考
一、strcpy原型
可以登录cplusplus查看:https://cplusplus.com/
二、思考步骤
1.库函数
代码如下(示例):
2.改写
通过查看库函数,设计函数:形参为两个字符串的地址,将source中的字符串拷贝到destination中
设计代码如下:
void my_strcpy(char * dest ,char src)
{
*dest = *src;
dest++;
src++;
}
指针++,直到遇到字符 "\0"停止 ---------> 使用while循环
void my_strcpy(char * dest ,char * src)
{
while( *src != '\0')
{
*dest = *src;
dest++;
src++;
}
// 最后一步,src = \0'
*dest = *src ;
}
优化代码:将'\0'和前面字符串合并为一步,后置++ ,先解引用再指针移动,可以直接将while循环中的条件修改如下:
while(*dest++ = *src++)
对比库函数中的形参有const,具体const作用:
const类似于一个紧箍咒,修饰变量可以限制变量不被修改。
const放在指针左边:const * p 表示指针指向的内容不能通过指针修改,但是指针指向的变量本身可以修改
const放在指针右边: * const int a 表示指针变量本身不能修改,但是指针指向的内容可以通过指针修改
const修饰source,则表明source不能被修改
对于遇到source为一个空指针,则可以用assert避免这种err
总结
本文主要介绍自己写strcpy的思路,技术有限多多包涵。