发现在做LeetCode题的时候使用空指针输入nu后编辑器会自动提示nullptr或NULL, 于是想知道这二者有什么区别.
c++ Primer 中:
得到空指针最直接的办法就是用字面值nullptr来初始化指针, 这也是c++11新标准刚刚引入的一种方法.
过去的程序还会用到一个名为NULL的预处理变量来给指针赋值, 这个变量在头文件cstdlib中定义,他的值就是0.
在新标准下, 现在的c++程序最好使用nullptr,同时尽量避免使用NULL.
另外,看LeetCode提示nullptr或NULL是按照答题区定义的结构体来的:
/**提示nullptr
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
/**提示NULL
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/