C语言之实用调试技巧(2)

简介: C语言之实用调试技巧(2)

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 运行时错误

借助调试,逐步定位问题。最难搞

本章终,希望对大家有帮助!


相关文章
|
6月前
|
存储 编译器 C语言
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存2
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
|
6月前
|
程序员 C语言 C++
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存1
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
|
6月前
|
C语言
C语言使用宏定义实现等级调试输出PRINT_LEVEL
C语言使用宏定义实现等级调试输出PRINT_LEVEL
125 0
|
1月前
|
C语言
C语言调试
C语言调试
18 0
|
3月前
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
5月前
|
安全 编译器 程序员
【C语言】:VS实用调试技巧和举例详解
【C语言】:VS实用调试技巧和举例详解
50 1
|
5月前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
53 2
|
6月前
|
程序员 C语言 C++
C语言实用的调试技巧
C语言实用的调试技巧
48 3
|
5月前
|
程序员 编译器 C语言
C语言中的assert.h:调试助手与断言详解
C语言中的assert.h:调试助手与断言详解
|
6月前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
47 1