当前位置: 首页 > ds >正文

C57-断言函数assert

一 基本语法

1. 作用
  • 调试工具用于运行时检查条件是否成立,若失败则终止程序并报错(文件名、行号、条件)。
2. 语法
#include <assert.h>
assert(condition);  // condition为假时触发断言
3. 行为
  • 条件为真:程序继续执行。
  • 条件为假:
    1. 输出错误信息(Assertion failed: condition, file, line)。
    2. 调用 abort() 终止程序。
4. 示例
int x = -1;
assert(x >= 0);  // 触发断言,程序终止
5. 关键注意
  • 仅用于调试:通过 #define NDEBUG 可禁用断言(发布时使用)。
  • 不替代错误处理:避免检查用户输入或外部数据,仅验证程序内部逻辑。
  • 无副作用:断言条件中避免修改变量(如 assert(x++))。
6. 适用场景
  • 检查“不应出现”的逻辑错误(如数组越界、空指针等)。

一句话总结assert 是开发阶段的“代码自检工具”,帮助快速定位问题,但需谨慎使用。

二 实践

  • 代码示例:
#include <stdio.h>
#include <string.h>
#include <assert.h>//依据"strcpy"函数原型封装一个函数用于实现其功能
char *MyStrcpy(char *dest,char *string)
{   //采用assert函数进行正式操作前的安全性检查assert(dest!=NULL&&string!=NULL);//函数的主体char *back=dest;    //对目标指针进行保存while(*string!='\0'){*dest=*string;dest++;string++;}*dest='\0';return back;
}int main()
{char str[128]={'\0'};char *p="Hello Word!";char *p1=NULL;MyStrcpy(str,p1);   //我们将会分别采用指针p与指针p1进行测试printf("%s",str);return 0;
}
  • 成果展示:

image-20250531212746775

http://www.xdnf.cn/news/10433.html

相关文章:

  • 【Dv3Admin】工具请求配置文件解析
  • 【PCI】PCI入门介绍(包含部分PCIe讲解)
  • [USACO1.5] 八皇后 Checker Challenge Java
  • 智慧物流园区整体解决方案
  • LeeCode 98. 验证二叉搜索树
  • C#数字金额转中文大写金额:代码解析
  • CppCon 2014 学习:Pragmatic Type Erasure
  • vue-09(使用自定义事件和作用域插槽构建可重用组件)
  • Hbase
  • 如何真正实现软件开发“快”起来:破除误区与落地实践
  • 通义灵码深度实战测评:从零构建智能家居控制中枢,体验AI编程新范式
  • 新版智慧景区信息化系统解决方案
  • JOIN 与子查询的性能对比分析
  • 【shell】通过Shell命令占用内存
  • 【代码坏味道】膨胀类 Bloaters
  • 力扣热题100之翻转二叉树
  • C++哈希表:unordered系列容器详解
  • day15 leetcode-hot100-28(链表7)
  • C++ —— B/类与对象(下)
  • 流媒体基础解析:从压缩到传输的基本了解
  • Linux研学-用户解析
  • Java Spring 之过滤器(Filter)详解与实战
  • Correlations氛围测试:文本或图像的相似度热图
  • 2024年ESWA SCI1区TOP,自适应学习灰狼算法ALGWO+无线传感器网络覆盖优化,深度解析+性能实测
  • DeepSeek 赋能数字孪生城市,筑牢应急管理智慧防线
  • day42 简单CNN
  • C++ list数据删除、list数据访问、list反转链表、list数据排序
  • HCIE-STP复习
  • C# 密封类和密封方法
  • simulink mask、sfunction和tlc的联动、接口