不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

assert

前言

我们在使用代码时,为了节省时间,经常进行代码的复用,那么如何保证别人在使用我们代码时可以达到预想的结果,加注释可能是一种办法,但一般都可以想到在我的函数体部分加入限制条件,但是今天我们我们介绍一种更普遍的方法,用assert断言来实现我们的想法。

在这里我们用一个增加数组元素的函数为例

  1. void AddValue(int* arr, int value, int len, int index, int size){
  2. if (arr != NULL && len > 0 && index < len && size < len) {
  3. //移动数据
  4. for (int i = size - 1; i >= index; i--) {
  5. arr[i + 1] = arr[i];
  6. }
  7. //插入元素
  8. arr[index] = value;
  9. }
  10. }

这我们可以看到,只有满足if中条件才能继续执行以下代码

我们再用断言来更改

  1. void AddValue(int* arr, int value, int len, int index, int size) {
  2. assert(arr != NULL && len > 0 && index < len&& size < len);
  3. //移动数据
  4. for (int i = size - 1; i >= index; i--) {
  5. arr[i + 1] = arr[i];
  6. }
  7. //插入元素
  8. arr[index] = value;
  9. }
  10. int main() {
  11. int arr[10] = { 1,2,3 };
  12. int len = sizeof(arr) / sizeof(arr[0]);
  13. AddValue(arr, 0, len, 0, 6);
  14. return 0;
  15. }

要注意的是断言如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行,其次使用时应加上头文件#include<assert.h>

比如我们在这里将len输入为-1

会出现以下结果

这就可以提醒使用者输入发生了错误

posted on 2022-11-16 15:57  皮皮祥  阅读(84)  评论(0编辑  收藏  举报