strcpy是一种字符串拷贝的方式,单独我们今天不用这个方法,我们自定义一个函数来模拟实现库函数strcpy
当我将一个NULL(空指针解引用的时候,程序就会报错),所以我们这里引入断言这个概念(assert),这时我们需要包含<assert.h>这个头文件空指针不为空指针就会报错,他会直接告诉你程序哪里有问题,大家可以将assert加上看一看效果
当然你也可以写成下列代码,while语句里面的循环我全都省略(但是必须要有个;),我们的实现字符串拷贝方式就在while哪个括号里面执行,然后将ret返回
这里面也涉及到了我们曾经讲过的链式访问的知识,省略了一些步骤而已
给大家讲一下const的用法
这里的const相当于把n和&n给固定死了,不能改变
但是p可以存放n的地址
const 修饰指针的时候
当const 放在*的左边的时候,限制的是指针指向的内容,不能通过指针变量改变指针指向的内容,但是指针变量的本身是可以改变的
当const 放在*的右边的时候,限制的是指针变量本身,指针变量的本身是不能改变的,但是指针指向的内容是可以通过指针来改变的
*p的值是可以改变的,这里的const是限制p存放的地址只能是&m,不能改变成为&n
这样放置const既不能修改值,也不能修改地址,希望大家能够理解
下面我们来模拟实现一个strlen这个函数
跟最开始的模拟实现库函数strcpy是大同小异的操作方式
我们来看代码
这里特别强调一下size_t这个返回类型(我们这样就可以把int改成size_t),这样就和我们的库函数里面strlen的返回类型保持一致了
%zd:专门用于打印size_t这个返回类型的
%u:用于打印无符号整数
他们两个是没什么区别的
最后我们来总结一下
7. 编程常见的错误
7.1 编译型错误---一般是找到语法问题
直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定。相对来说简单
7.2 链接型错误---链接期间发生的错误(比如函数的调用,函数名不匹配等等会报错LNK)
看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。一般是标识符名不
存在或者拼写错误
7.3 运行时错误
借助调试,逐步定位问题。最难搞
本章终,希望对大家有帮助!