赞
踩
一 ·
1.strcpy是什么
2.strcpy使用
3.监视strcpy
二.模拟实现strcpy
1.初步实现
2.输入空指针
3.assert
4.阶段完整代码
三.返回值
1.返回类型
2.const
四.完整代码
总结
前言
strcpy我们并不陌生,而使用strcpy中会出现复制错误,复制地方错误,又该如何解决这些错误呢?
答案就在今天揭晓
一.1.strcpy是什么
2.strcpy的实现
好神奇哦,arr1中的hello全部复制到arr2中了,看到这里,有些同学不免产生疑问,屏幕上显示的是hello,为什么没有\n呢?请大家接着往下看,马上揭晓答案哦。
3.监视分析
1.赋值,将*赋给arr1,将hello和\n赋给arr2
2.复制操作
3.原理图
二.
1.模拟实现
本质:取出地址,然后往后加加
实现:将src替换掉dest,替换一次指针加一,src,dest同时往后走,src遍历hello\n,当src指向\n跳出遍历
实现原理
通过观察arr1,它含有\n,那有同学提出疑问,src可以直接访问arr1吗?当然可以的啦。
一下就是实现过程
本质:直接打印\0,无需最后交换\0
用src替换dest,src碰上不是\0,替换*,然后指针src继续往后走,直至\0结束替换
2.空指针
有空指针后程序报错了,咦,怎么会出现这个问题呢,我们又该如何解决这个问题呢?接下来我会指出并纠正它嘞。
我们可以先判断src以及dest中是否存在空指针,如果有空指针,那么就不执行后续操作。
程序在运行过程中出现了越界访问,我们怎样解决这个问题呢?
其实很简单,看我的操作
扩大了arr开辟的内存空间,去装下*
我想到一个问题,小明蛮粗心,他写了代码,他认为这串代码是对的,实际上存在错误的。第二天,小明开心的把代码交给上司,上司说,你被开除了。接下来,我们引进新的函数断言。
3.断言
作用:assert中可以放一个表达式,如果表达式为假,就报错,如果为真那就继续执行。
看见程序给你报错了把,感觉assert是不是很实用呀,当然喽,别忘了加上头文件
4.完整代码
上述代码存在一系列问题的,我们又该如何解决呢?那我们看看下面的图
以下是解决后的代码
有的小伙伴提出疑惑了,const是啥嘞,有啥作用嘞,之后我会专门出一个博客讲解,别急哟。
好啦,以上就是我模拟实现strcpy的完整过程,我知道其中有许多不足,望大家指出。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。