相关疑难解决方法(0)

什么是nullptr?

我们现在拥有许多新功能的C++ 11.一个有趣且令人困惑的(至少对我来说)是新的nullptr.

嗯,不再需要令人讨厌的宏了NULL.

int* x = nullptr;
myclass* obj = nullptr;
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还没有得到如何nullptr运作.例如,维基百科的文章说:

C++ 11通过引入一个new 关键字作为一个区分空指针常量来解决这个问题:nullptr.它的类型为nullptr_t,它是可隐式转换的,可与任何指针类型或指向成员类型的类型相媲美.除了bool之外,它不可隐式转换或与整数类型相比.

它是一个关键字和一个类型的实例?

另外,你有另一个例子(在维基百科旁边)哪里nullptr优于好老0

c++ pointers nullptr c++11

546
推荐指数
8
解决办法
31万
查看次数

NULL,'\ 0'和0之间有什么区别

在C中,似乎有零各个值之间的差- NULL,NUL0.

我知道ASCII字符的'0'计算结果为480x30.

NULL指针通常定义为:

#define NULL 0
Run Code Online (Sandbox Code Playgroud)

要么

#define NULL (void *)0
Run Code Online (Sandbox Code Playgroud)

另外,也有似乎评价的NUL人物.'\0'0

是否有时候这三个值不相等?

这在64位系统上也是如此吗?

c null pointers

287
推荐指数
6
解决办法
28万
查看次数

C中的NULL总是为零吗?

昨天我正在面试一个中级软件工程职位的人,他提到在C中,NULL并不总是零,并且他已经看到了C的实现,其中NULL不为零.我觉得这很可疑,但我想确定.谁知道他是对的?

(回复不会影响我对这位候选人的判断,我已将决定提交给我的经理.)

c null pointers zero

56
推荐指数
4
解决办法
3万
查看次数

在C++中使用NULL?

可能重复:
你对C++中的指针使用NULL还是0(零)?

在C++中使用NULL或仅使用0值是个好主意吗?

在使用C++调用的C代码中是否存在使用NULL的特殊情况?像SDL?

c++ null

35
推荐指数
2
解决办法
11万
查看次数

检查是否在数组c ++中找到了元素

如何检查我的数组是否有我正在寻找的元素?

在Java中,我会做这样的事情:

Foo someObject = new Foo(someParameter);
Foo foo;
//search through Foo[] arr
for(int i = 0; i < arr.length; i++){
  if arr[i].equals(someObject)
    foo = arr[i];
}
if (foo == null)
  System.out.println("Not found!");
else
  System.out.println("Found!");
Run Code Online (Sandbox Code Playgroud)

但是在C++中我不认为我可以搜索一个Object是否为null所以C++解决方案是什么?

c++

22
推荐指数
4
解决办法
13万
查看次数

nullptr虚假吗?

当用作布尔表达式或显式或隐式转换为布尔值时,是否nullptr始终为假?该实现是否在标准中定义或指定?

我编写了一些代码进行测试,但不确定是否可以完全测试此属性。我找不到一个专门讨论此问题的现有SO答案。从我所见,cppreference并没有提到这一点。

if (nullptr) {
    ;
} else {
    std::cout << "Evaluates to false implicitly\n";
}

if (!nullptr) {
    std::cout << "Evaluates to false if operated on\n";
}

if (!(bool)(nullptr)) {
    std::cout << "Evaluates to false if explicitly cast to bool\n";
}
Run Code Online (Sandbox Code Playgroud)

预期和实际:

Evaluates to false implicitly
Evaluates to false if operated on
Evaluates to false if explicitly cast to bool
Run Code Online (Sandbox Code Playgroud)

c++ nullptr implicit-conversion c++11

15
推荐指数
2
解决办法
540
查看次数

NULL宏或NULL const

我目前正在阅读一本关于C++的书,在本书中,作者解释说使用常量而不是NULL宏更好,但没有真正解释为什么或给出任何优点或缺点.

那么为什么最好使用:

const int NULL = 0;
int *ptr = NULL;
Run Code Online (Sandbox Code Playgroud)

代替:

int *ptr = NULL;
Run Code Online (Sandbox Code Playgroud)

唯一的解释是NULL宏不是类型安全的.

c++ null-pointer

14
推荐指数
2
解决办法
2938
查看次数

在C ++中如何定义NULL?

在C中,NULL通常#defined0((void *)0)。我期望这在C ++中是相似的,并且关于堆栈溢出的许多答案似乎也表明了这种情况。但是,当我尝试编译以下程序时:

#include <stdio.h>

void f(int x) {
    printf("void *\n");
}

void f(void *x) {
    printf("int\n");
}

int main(void) {
    f(0);            // int
    f((void *)0);    // void *
    f(nullptr);      // void *
    f(NULL);         // why is this ambiguous?
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我这f(NULL)是模棱两可的。具体来说,我的编译器说:

sample.cpp:15:5: error: call to 'f' is ambiguous
    f(NULL);
    ^
sample.cpp:3:6: note: candidate function
void f(void *x) {
     ^
sample.cpp:7:6: note: candidate function
void f(int x) {
     ^ …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
180
查看次数

C++98 正确检查空指针

C++11引入了nullptr我没有的关键字。

我想有NULL来自 C的宏,我从这里这里的一些东西中读到了在 C++ 中使用的宏,但我仍然不确定在这个旧的 C++ 标准中检查空指针的正确方法是什么。

我基本上希望能够使用 Boost Test 为我的测试用例编写此代码:

aWrapperDataStructure x;
BOOST_CHECK_NE(x.get_ptr(), static_cast<decltype(x.get_ptr())>(nullptr));
Run Code Online (Sandbox Code Playgroud)

但也许,正如 Tutorials Point 建议的那样,考虑到限制,这样的事情更合适:

BOOST_CHECK(x.get_ptr()); //true when not NULL
Run Code Online (Sandbox Code Playgroud)

不过,关于这方面的一些事情让我感到厌烦,所以我想知道这里的最佳做法是什么。如果它在网上的某个地方,或者在 SO 上,它已经被埋藏很久了,我找不到它。谢谢!

null-pointer c++98

5
推荐指数
1
解决办法
1044
查看次数

C语言中为什么会有NULL?

NULLC语言中为什么有a ?是否存在仅简单文字0不能完全相同的上下文?

c

3
推荐指数
1
解决办法
2447
查看次数

标签 统计

c++ ×6

c ×3

null ×3

pointers ×3

c++11 ×2

null-pointer ×2

nullptr ×2

c++98 ×1

implicit-conversion ×1

zero ×1