C++ - "!pointer"和"pointer == nullptr"的区别?
C++ - Difference between "!pointer" and "pointer == nullptr"?
所以我发现了一个函数中的一小段代码
void remove(Node * & p, const int & key){
if(!p){
throw out_of_range("The key you're looking for can't be foundn");
}
if(p == nullptr){
return;
}
并且我不太理解CCD_ 1和CCD_。从我读到的关于C++的内容来看,这两个语句似乎总是等价的。不是吗?我错了吗?
需要澄清一下。
谢谢!
实际上两者是相同的。您可以同时使用这两种方法来检查指针是否为null。
nullptr是在C++11中引入的,它可以像if(p==nullptr(一样使用,它比if(!p(更可取
希望这有帮助:(
如果p==0(换句话说!p(,第一个"if"实际上会进行比较。它有点像C的NULL桥接到C++中,可能会在重载函数中引起歧义。例如:check(int(和check(int*(。
第二个if是根据指针类型(nullptr(检查p
所有中的第一个
- 两者100%相同,相同的意思是相同的工作
- 开发人员刚刚使用了2个If语句(第一个显示未找到它的消息(和第二个回来的人,虽然他可以在1中做到这两件事,如果也是,也许他只是想表明他知道这两种方法——这就是他这样做的原因——否则就没有两者的差异,可能还需要一个大O时间。-要获得更清晰的视图,您可以访问此链接(p==NULL和c++中的!p之间的差异(
详细答案如下:
p和p==nullptr都具有相同的Working您案例中的代码显示,if(!p(和if(p==nullptr(都只是用来显示,开发人员知道这两种方法,他是一名熟悉旧版本C的高级开发人员++因为如果他使用
if(!p){throw out_of_range("The key you're looking for can't be foundn");
return;
}
or Uses
if(p==nullptr)
{throw out_of_range("The key you're looking for can't be foundn");
return;}
但在你的案例中,唯一的开发者显示在第一个IF中找不到节点的消息并在Second If中返回了函数。无论他想做什么或他的意图是做什么,但两者都是相同的,它只是使用了另一个根本不需要的If。
如果你仍然需要更多关于两者之间详细差异的帮助,你可以检查p=NULL和!c++中的p
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++ - "!pointer"和"pointer == nullptr"的区别?
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 返回递归调用和仅递归调用的区别
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- "owned pointer"和 std::shared_ptr 的"stored pointer"有什么区别?
- 在 C++ 中,这两种"pointer delete"操作有什么区别?
- if(!pointer) 和 if(!*pointer) 有什么区别?
- "C++ void Pointer"和"C# var"的区别
- 除了语法,"call by reference"和"call by pointer"在内存方面C++有什么区别吗?