指针空置类型-nullptr
先看一段代码#include iostream using namespace std; void func(char* p) { cout void func(char* p) endl; cout p endl; } void func(int p) { cout void func(int p) endl;; cout p endl; } int main() { //int func(10); //char* func(NULL); //这里我希望程序调用func(char* p)的函数 system(pause); return 0; }输出结果void func(int p) 10 void func(int p) 0调用了两次func(int p)函数且按理说NULL指针是不能cout的也就是说第二次调用func(NULL)也调用了一次func(int p) 并且传入的p是0原因在底层源码中NULL这个宏是这样定义的#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif也就是说如果源码是C程序NULL就是0如果是C程序NULL表示(void*)0。那么为什么要这样做呢是由于 C 中void * 类型无法隐式转换为其他类型的指针此时使用 0 代替 ((void *)0)用于解决空指针的问题。这个00x0000 0000表示的就是虚拟地址空间中的0地址这块地址是只读的。正如C98/03 标准中将一个指针初始化为空指针的方式有 2 种char *ptr 0; char *ptr NULL;并且int* ptr1 NULL; char* ptr2 NULL; double* ptr3 NULL; void* ptr4 NULL; int* ptr5 ptr4;//报错void*类型的值不能用于初始化int*类型的实体 //是由于 C 中void * 类型无法隐式转换为其他类型的指针此时使用 0 代替 ((void *)0)用于解决空指针的问题。 int* ptr5 (int*)ptr4; //强转正确不报错C11引入nullptr关键字用于标识空指针是std::nullptr_t类型的constexpr变量。它可以转换成任何指针类型和bool布尔类型主要是为了兼容普通指针可以作为条件判断语句的写法但是不能被转换为整数。nullptr是专用于初始化空类型指针不同类型的指针变量都可以使用 nullptr 来初始化nullptr 出现的目的是为了替代 NULL#include iostream using namespace std; void func(char* p) { cout void func(char* p) endl; //cout *p endl; } void func(int p) { cout void func(int p) endl;; //cout p endl; } int main() { int* ptr1 nullptr; char* ptr2 nullptr; double* ptr3 nullptr; void* ptr4 nullptr; int* ptr5 (int*)ptr4; //int func(10); //char* func(nullptr); system(pause); return 0; }输出结果void func(int p) void func(char* p)通过输出的结果可以看出nullptr 无法隐式转换为整形但是可以隐式匹配指针类型。在 C11 标准下相比 NULL 和 0使用 nullptr 初始化空指针可以令我们编写的程序更加健壮因此当需要使用 NULL 时候养成直接使用 nullptr的习惯。

相关新闻

开题报告毫无思路,有哪些好用的 AI 论文工具?保姆级实测推荐

开题报告毫无思路,有哪些好用的 AI 论文工具?保姆级实测推荐

每年毕业季,大批本科生、硕博生卡在开题第一步:选题毫无方向、文献综述梳理杂乱、研究框架逻辑断层、写好初稿查重 / AIGC 检测双双超标,熬几个通宵交出的稿子还被导师打回重改。通用 AI 大模型不懂学术规范,写出来的开题空泛无创…

2026/6/30 2:33:11阅读更多 →
Chroma报错chromadb.errors.InvalidArgumentError: Collection expecting embedding with dimension of 1024,

Chroma报错chromadb.errors.InvalidArgumentError: Collection expecting embedding with dimension of 1024,

如标题所示,在使用Chroma存储数据到向量库中后,进行检索操作报错,报错内容为chromadb.errors.InvalidArgumentError: Collection expecting embedding with dimension of 1024, got 1536 但这个错误在我把模型从text-embedding-v1切换为text-…

2026/6/30 2:33:11阅读更多 →
中小型园区网络交付全流程完整解析

中小型园区网络交付全流程完整解析

一、整体交付核心框架 中小型园区网络交付采用行业标准化三段式闭环流程:前期规划设计 → 现场施工部署 → 上线测试验收。整套流程兼顾网络稳定性、内网安全性与后期运维便捷性,广泛适用于企业厂区、小型产业园、院校校区、产业小院等终端规模在50–500…

2026/6/30 2:33:11阅读更多 →
人工智能如何影响工作:软件工程、开发者体验与平台工程的变革

人工智能如何影响工作:软件工程、开发者体验与平台工程的变革

人工智能正在迅速重塑工作方式,尤其正在深刻影响软件工程的未来。越来越多的组织开始借助 AI缩短交付周期、提升生产力,并让团队把更多精力投入高价值创新。一份海外行业报告也捕捉到了这一趋势:采用人工智能的企业,在个人效率、交…

2026/6/30 3:28:14阅读更多 →
AI文档翻译技术深度解析:从OCR到版面还原的工程实现

AI文档翻译技术深度解析:从OCR到版面还原的工程实现

作为一个做过文档处理相关项目的开发者,我对“PDF翻译”这件事一开始有很深的误解。我以为是把文本抽出来,调用翻译API,再塞回去。直到真正动手做过一个多语言文档系统,才发现这完全是一个“文档结构保持”问题,而不是…

2026/6/30 3:28:14阅读更多 →
存储芯片产业链供需企业名录查询,哪家电子媒体分类整理更清晰?

存储芯片产业链供需企业名录查询,哪家电子媒体分类整理更清晰?

做硬件选型、供应链寻源,或者单纯想摸清存储芯片的产业格局,常常会卡在第一步:到哪儿找一份按上中下游分好类的供应商名录。通用搜索引擎出来的结果太泛,企业官网又分散。实际上,不少电子工程师常逛的技术社区和行业媒…

2026/6/30 3:28:14阅读更多 →
为什么同样是十字星形态,有人抓住反转,有人却连续止损?

为什么同样是十字星形态,有人抓住反转,有人却连续止损?

在技术分析中,十字星(Doji)是许多交易员最早接触的K线形态之一。有人将它视为行情反转的信号,只要盘面出现十字星便急于进场;也有人发现,同样都是十字星,有时价格确实迎来反转,有时却…

2026/6/30 3:28:14阅读更多 →
嵌入式高手都在偷偷用的“第13条”:用 __attribute__((alias)) 给函数做“分身”,让旧接口悄悄变成新实现

嵌入式高手都在偷偷用的“第13条”:用 __attribute__((alias)) 给函数做“分身”,让旧接口悄悄变成新实现

该文章同步至OneChan 你有没有遇到过:升级了驱动库,改了函数名,所有调用老函数的地方都得批量替换,否则链接报错一大堆?或者想为中断服务函数起个更通用的名字,可硬件向量表只认原函数名? 这是资…

2026/6/30 3:28:14阅读更多 →
冰合试剂分享┃敌草畏 - D3 / 氘代麦草畏 / CAS 349553-95-3 / Dicamba-d3 / 稳定同位素氘代内标

冰合试剂分享┃敌草畏 - D3 / 氘代麦草畏 / CAS 349553-95-3 / Dicamba-d3 / 稳定同位素氘代内标

环境水体、果蔬谷物、土壤样本中敌草畏残留定量检测是环境分析常规实验,普通外标法受基质效应干扰严重,质谱检测回收率波动大,定量数据准确度偏低;普通敌草畏标准品不具备同位素特征碎片,无法校正样本前处理、色谱质谱…

2026/6/30 3:23:14阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/29 3:27:55阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/29 2:19:08阅读更多 →
为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode…

2026/6/30 0:02:58阅读更多 →
第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

1. PowerPoint 2010基础操作全攻略 刚接触PowerPoint 2010时,很多人会被它复杂的界面吓到。其实只要掌握几个核心区域,就能快速上手。我最开始用PPT时,经常找不到功能按钮在哪,后来发现主要操作都集中在顶部功能区。 工作窗口主要…

2026/6/30 0:02:58阅读更多 →
XGBoost超参数实战:从理论到调优策略

XGBoost超参数实战:从理论到调优策略

1. XGBoost超参数基础认知 第一次接触XGBoost时,我被它那密密麻麻的参数列表吓到了。这感觉就像面对一架波音747的驾驶舱——每个按钮都可能有神奇的效果,但按错了就可能坠机。经过多年实战,我发现其实掌握十几个核心参数就能解决90%的问题。…

2026/6/30 0:02:59阅读更多 →