天天看點

c++11新特性 Null與nullptr

nullptr為c++11中新加入的。

1、C程式中的NULL為空指針,但是該空指針在c++11中不能延用

在c程式中NULL是一個宏定義。定義如下:

NULL實際上是一個空指針。在過程中發生了隐式類型轉換,把void指針轉換成了相應類型的指針。

但是在c++中NULL由于void*類型不允許隐式轉換成其他類型,是以NULL不代表空指針,而是0 。

3、c++11中nullptr代表空指針,NULL代表0

這裡對null做了一個輸出,輸出null方法借鑒以下連結。

添加連結描述

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
	double *c1 = NULL;
	double *c2 = nullptr;
	int a1 = NULL;
	//int a2 = nullptr;//報錯,表示無法從“nullptr”轉化為“int”類型
	int a2 = (int)nullptr;

	printf(" %s\n", c1);
	printf(" %s\n", c2);
	printf(" %s\n", a1);
	printf(" %s\n", a2);
	return 0;
           

輸出結果:

c++11新特性 Null與nullptr

----?怎麼和我想象中的結果不一樣。

待補充。