相关疑难解决方法(0)

为什么在C和C++中对NULL指针的定义不同?

在C中,NULL定义为(void *)0在C++中它是0.为什么会这样?在CI中可以理解,如果NULL不是类型转换,(void *)则编译器可能/可能不会生成警告.除此之外,有什么理由吗?

c c++ null pointers

71
推荐指数
2
解决办法
6万
查看次数

初始化nullptr_t时,0如何区别于其他整数?

按照我的理解,std::nullptr_t可以从被初始化nullptr,以及从0.但同时下面的第三次初始化不起作用,尽管5类型如下0:

#include <memory>

int main()
{
    std::nullptr_t null1=0;
    std::nullptr_t null2=nullptr;
    std::nullptr_t null3=5; // error: cannot convert ‘int’ to ‘std::nullptr_t’ in initialization
}
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?即如何在标准库区分05在编译的时候,如果这些文字是不是模板参数?

可以创建一个自定义类,它在编译时类似地区分其构造函数的参数,而不是std::nullptr_t用于此吗?

c++ types type-conversion

20
推荐指数
3
解决办法
1139
查看次数

为什么 C++ 编译器允许将 0 分配给指针而不允许其他数字

我正在发布一个问题的答案 - 并评论了我想到的,感谢另一张名为金属的海报

C++ 编译器允许这样做:

int *p = 0;但不是这个int *p = 1。是否被0视为特殊号码?

编辑:@DavidHefferman 说Is 0 special? In the context of a pointer, yes it is.- 为什么?

c++ compiler-construction

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

标签 统计

c++ ×3

c ×1

compiler-construction ×1

null ×1

pointers ×1

type-conversion ×1

types ×1