Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:初始化指向int的指针_C++_Visual Studio 2010 - Fatal编程技术网

C++ C++;:初始化指向int的指针

C++ C++;:初始化指向int的指针,c++,visual-studio-2010,C++,Visual Studio 2010,以下是我在Visual Studio 2010上运行的示例代码: #include <iostream> int main() { int **p(NULL); } #包括 int main() { int**p(空); } 我得到这个错误:error C2059:syntax error:'constant' 但是如果我改变int**p(NULL)到int**p=NULL上面的代码编译得很好 在GCC(版本:4.4.2)上检查了这一点,两者都可以正常工作。这里缺少什么

以下是我在Visual Studio 2010上运行的示例代码:

#include <iostream>

int main()
{
    int **p(NULL);
}
#包括
int main()
{
int**p(空);
}
我得到这个错误:
error C2059:syntax error:'constant'

但是如果我改变
int**p(NULL)
int**p=NULL上面的代码编译得很好


在GCC(版本:4.4.2)上检查了这一点,两者都可以正常工作。这里缺少什么?

您会得到一个语法错误:显然没有定义NULL。您应该包括cstdlib。

这可能是编译器本身的一个bug,也可能是您做了一些事情并询问了其他问题

MSVC10支持C++11中的一些功能,例如:

int **p1 = nullptr;
int **p2{}; //initialized to nullptr!

你可以试试这些。两者都很好。

VC++编译器似乎对指针到指针的初始化感到困惑

例如,这是可行的

int (**p)(NULL);
这些没有

int *i;
int **p(&i);
int **o(NULL);
但这是可行的

int (**p)(&i);
typedef int* intp;
intp *o(NULL);

等等。。。模式是只要存在两个**,初始化就会失败!我猜是虫子!来自MSVC团队的人可能能够确认

看起来像VisualStudio缺陷,如果我用C++编译@并运行下面的代码

,它就可以工作了。
int main() 
{     
    int **p(NULL); 
    return 0;
} 

同样适用于使用g++编译器。

可能您的编译器不支持。似乎是编译器中的一个bug。有趣!注意
int*p(0)有效,而
int**p(0)没有。请注意,如果定义
typedef int*PINT然后写入
PINT*p(空)它也可以正常工作<代码>整数**p(空)肯定也可以工作。事实上它并不有趣。那完全不同。。关注这个问题,伙计:)@纳瓦兹:除了我所做的以外,我没有问其他任何问题:)@omggs:在这种情况下,它肯定是编译器中的一个bug。:-)