先说一下传统的方式:
1,创建函数,参数是指针变量,用来接收字符串的地址,把字符串2 copy到 字符串1里面。
(这是一种土味方法,可以应付期末考试。也仅仅于此了。)
**********用循环,把后面的字符串一个一个copy到前面一个字符串中,然后地址慢慢往后挪一个地址。。。知道挪到\0,循环结束。。但是\0没有copy进去,所以最后再加一步,把\0 copy进去。。
下面这是精细改良版本了,可以预防各种突发事件,以及消除各种潜在的错误。(堪称腾讯,字节程序员的标配代码。。。。)
1,聪明的人会想到,反正是后置++,不如把++放在上面,岂不是省事一些? 没错,合理的。
2,又有聪明的人会想到,上面copy字符串内容,下面一句copy '\0'这个字符,会不会还是麻烦。直接放在循环条件里,那样万事大吉了,一下都copy进来。省事的很。没错,合理的。
(别看这个很扯淡,这个是对的,你们运行就知道了,完全没问题的)
3,还是感觉不够好,万一有人手误,传了一个空指针过去怎么办,这种隐患得考虑进去啊,
加了assert函数之后,如果穿了空指针过去,会准确报错,并且精准的找到错误所在的地方。
举个例子:
这传了一个空指针了,结果如下
准确的定位错误所在地方,非常方便
4最后,当然了,这是终极版本,基本找不到漏洞了。。函数是把start 拷贝到desrt里面,大伙别整反了奥
上面加了const,大伙知道啥意思吧,常量,使*start不能修改,防止大家,把dest的拷贝到start中,房子大家搞反了。直接加const,固定住start里面的东西,是不可修改的。。不妨碍把里面东西拷贝到dest里面,,,dest是可以修改的。。。
最后这一张是终极最好的版本啊,大伙别看错了。。。。。