nullptr是什么类型?

RLib 2012-02-05 10:54:14
我知道是编译器关键字
但是和std::nullptr_t有和关系?
...全文
527 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-02-06
  • 打赏
  • 举报
回复
我接受新事物的意愿太低迷了... 无能为力...
Wolf0403 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 icerlion 的回复:]

我记得在不同的cpu架构下,空指针的定义是不一样的,有些是指向地址0,有些是指向0xFFFFFFFF.
[/Quote]

这句坑爹的话我已经听了小十年了,怎么就没有一个人能举一个具体的例子说哪坑爹的平台的 C++ 环境是让 NULL 定义成 0xFFFFFFFF 然后还能做 if ( !p ) 判断的?
pengzhixi 2012-02-06
  • 打赏
  • 举报
回复
新标准里面的。用来给指针初始化的。
gbb21 2012-02-06
  • 打赏
  • 举报
回复
你可以认为nullptr的类型是任意指针类型的子类~
heartszhang 2012-02-06
  • 打赏
  • 举报
回复
作为c++标准控,我用c++标准回答你。

c++11标准:

1. nullptr是一个字面值常量,类型为std::nullptr_t。(如果你不懂,对比一下:12是一个字面值常量,类型为int,123.0 是一个字面值常量,类型为double)。

2. nullptr和0统称为空指针常数。注意下面这一点:空指针常数可以转换为任意类型的指针类型。

int *a = 0; //ok,可以转换
int *b = nullptr; //ok,可以转换

3. 两个空指针相等;

nullptr==0 //true

4. 0可以转换为std::nullptr_t

std::nullptr_t a = nullptr; //ok
std::nullptr_t b = 0; //ok

5. std::nullptr_t类型不可以转换到0

int a = nullptr; //错误

6. std::nullptr_t可以转换到bool,值为false

if (nullptr) {
} else {
//nullptr 为false,所以执行这里。
}
icerlion 2012-02-05
  • 打赏
  • 举报
回复
我记得在不同的cpu架构下,空指针的定义是不一样的,有些是指向地址0,有些是指向0xFFFFFFFF.
篾匠 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jim_king_2000 的回复:]

nullptr是C++11关键字,表示空指针。std::nullptr_t就是nullptr的类型。
[/Quote]

+1
Jim_King_2000 2012-02-05
  • 打赏
  • 举报
回复
nullptr是C++11关键字,表示空指针。std::nullptr_t就是nullptr的类型。
RLib 2012-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]

CLR ?

nullptr indicates that an object handle, interior pointer, or native pointer type does not point to an object. nullptr is only valid when compiling with /clr (Common Language Runtime Compila……
[/Quote]

没有使用CLR亦可编译通过(VS2010)哦

就是不知道和std::nullptr_t是啥子关系
Eleven 2012-02-05
  • 打赏
  • 举报
回复
CLR ?

nullptr indicates that an object handle, interior pointer, or native pointer type does not point to an object. nullptr is only valid when compiling with /clr (Common Language Runtime Compilation).

You cannot initialize handles to zero; only nullptr can be used. Assignment of constant 0 to an object handle will produce a boxed Int32 and a cast to Object^.

nullptr can be used in the initialization of the following pointer types:

Native pointer:

Managed handle:

Managed interior pointer:

nullptr can be used for reference checking before using a pointer.

nullptr can be used anywhere a handle or a native pointer can be used. nullptr can also be used as an argument for functions.

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧