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

网站建设中图片电话百度搜索下载

网站建设中图片电话,百度搜索下载,装修材料,网络营销教案ppt文章目录 【 0. 问题背景 】0.1 野指针和悬空指针0.2 传统空指针 NULL0.3 传统空指针的局限性 【 1. 基本用法 】【 2. nullptr 的应用 】2.1 nullptr 解决 NULL 的遗留BUG2.2 简单实例 【 0. 问题背景 】 0.1 野指针和悬空指针 总结 野指针悬空指针产生原因指针变量未被初始… 文章目录 【 0. 问题背景 】0.1 野指针和悬空指针0.2 传统空指针 NULL0.3 传统空指针的局限性 【 1. 基本用法 】【 2. nullptr 的应用 】2.1 nullptr 解决 NULL 的遗留BUG2.2 简单实例 【 0. 问题背景 】 0.1 野指针和悬空指针 总结 野指针悬空指针产生原因指针变量未被初始化 就开始使用。对象被删除或内存块被释放后指向该内存的指针没有被及时设为nullptr指针指向一块无效内存。危害使用野指针可能会导致 程序崩溃因为它可能会随机访问未知内存。如果继续使用它可能会操作一些已被操作系统回收或重新分配给其他程序的内存从而导致 数据损坏或程序异常。避免方法在 定义指针的同时完成初始化操作 即便该指针的指向尚未明确也要将其初始化为空指针。应该在释放内存或对象销毁后将指针设置为空指针 。 野指针和悬空指针的示例 #include iostream using namespace std; int main() {// 野指针示例int* wildPtr; // 未初始化的指针// 未定义行为尝试使用未初始化的指针//cout *wildPtr endl; // 可能导致崩溃// 悬空指针示例int* danglingPtr new int(10); // 分配内存delete danglingPtr; // 释放内存// 未定义行为尝试访问已释放的内存//cout *danglingPtr endl; // 可能导致崩溃return 0; }0.2 传统空指针 NULL 传统空指针 的基本语法 C98/03 标准中将一个指针初始化为空指针的方式有 2 种 第一种可以将指针明确指向 00x0000 0000这个内存空间。大多数操作系统都不允许用户对地址为 0 的内存空间执行写操作若用户在程序中尝试修改其内容则程序运行会直接报错。第二种可以将指针初始化为 NULL。NULL 并不是 C 的关键字它是 C 为我们事先定义好的一个宏并且它的值往往就是字面量 0#define NULL 0。 int *p 0;int *p NULL; //推荐使用0.3 传统空指针的局限性 C 中将 NULL 定义为字面常量 0虽然能满足大部分场景的需要但个别情况下它会导致程序的运行和我们的预期不符如下代码所示 对于 isnull(0) 来说显然它真正调用的是参数为整形的 isnull() 函数而对于 isnull(NULL)我们期望它实际调用的是参数为 void*c 的 isnull() 函数但观察程序的执行结果不难看出并不符合我们的预期。 #include iostream using namespace std;void isnull(void* c) {cout void*c endl; }void isnull(int n) {cout int n endl; }int main(){isnull(0);isnull(NULL);return 0; }C 98/03 标准中如果我们想令 isnull(NULL) 实际调用的是 isnull(void* c)就需要对 NULL或者 0进行强制类型转换如此才会成功调用我们预期的函数。 isnull( (void*)NULL ); // 或者 isnull( (void*)0 );【 1. 基本用法 】 由于 C 98 标准使用期间NULL 已经得到了广泛的应用出于兼容性的考虑C11 标准并没有对 NULL 的宏定义做任何修改即 传统空指针NULL仍可用但是有BUG 。为了修正 C 存在的这一 BUGC 标准委员会最终决定另其炉灶在 C11 标准中引入一个新关键字即 nullptr。nullptr_t 指针空值类型 是 C11 新增加的数据类型。nullptr 是 nullptr_t 类型的右值常量专用于初始化空类型指针也就是说nullptr 仅是该类型的一个已定义好可直接使用的实例对象 如果需要我们完全定义出多个同 nullptr 完全一样的实例对象。 【 2. nullptr 的应用 】 2.1 nullptr 解决 NULL 的遗留BUG 由于 nullptr 无法隐式转换为整形而可以隐式匹配指针类型 因此执行结果和我们的预期相符。 总之在 C11 标准下相比 NULL 和 0使用 nullptr 初始化空指针可以令我们编写的程序更加健壮。 #include iostream using namespace std; void isnull(void *c){cout void*c endl; } void isnull(int n){cout int n endl; } int main() {isnull(NULL);isnull(nullptr);return 0; }2.2 简单实例 不同类型的指针变量都可以使用 nullptr 来初始化编译器分别将 nullptr 隐式转换成 int*、char* 以及 double* 指针类型。 int * a1 nullptr; char * a2 nullptr; double * a3 nullptr;
http://www.hkea.cn/news/14521056/

相关文章:

  • 做网站教程百度云百度seo站长工具
  • 南宁网站优化公司哪家好外贸seo推广公司
  • 怎么叫人做网站网络推广浏览目标
  • 有那个网站做简历模板wordpress怎么输代码
  • 手机开发框架seo网站页面诊断
  • 做门的网站wordpress小工具宽度
  • 免费自己制作logo的网站公司网站建设总结报告
  • 上海app网站建设渭南网站建设价格
  • 电子商务网站建设林锋课本答案安卓app下载平台
  • 那些公司做网站怎么做自己的网站卖东西
  • 网站先做移动站在做pc站可行吗郴州建设企业网站
  • 清远专业网站制作公司公司网站如何建立
  • 金阊做网站价格WordPress最好版本
  • 超大型网站建设深圳低价网站建设
  • 论坛类网站建站wordpress 文艺小清新
  • 网站开发需求ppt做公司网站思路
  • 房地产广告设计网站263企业邮箱腾讯登录入口
  • 在百度怎么建自己的网站dede网站5.7广告去除
  • 单位网站备案流程廊坊手机网站团队
  • 谁做网站做的比较可信如何制作网页小游戏
  • 江苏省住房城乡建设厅网站自己做的网站网页打开速度慢
  • wordpress适用linux电商seo优化
  • 网站开发在线网站关键词选取的步骤
  • 做篮球视频网站建站免费加盟
  • 网上做试卷的网站网站开发 报价单
  • 石家庄建网站挣钱优帮云关于网站开发的外文翻译
  • 素材网站推荐浙江立鹏建设有限公司网站
  • 网站变exe文件怎么做有百度推广的网站
  • 蓝色大气企业网站模板wordpress dux
  • 深圳网站建设在哪里找网站模板服务商