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

时间:2012-06-21 09:01:03

标签: c++ visual-studio-2010

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

#include <iostream>

int main()
{
    int **p(NULL);
}

我收到此错误:error C2059: syntax error : 'constant'

但如果我将int **p(NULL);更改为int **p = NULL;,则上述代码编译正常。

在GCC(版本:4.4.2)上查看此内容并且两者都正常。我在这里缺少什么?

4 个答案:

答案 0 :(得分:3)

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

这适用于例如

int (**p)(NULL);

这些不是

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

这虽然有效

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

等......只要有两个**,模式就会失败!我猜错了!来自MSVC团队的人可能能够确认

答案 1 :(得分:0)

这可能是编译器本身的一个错误,也可能是你已经做了一些事情并且问了别的东西。

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

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

您可以尝试其中任何一种。两者都很好。

答案 2 :(得分:0)

看起来像Visual Studio的缺陷,如果我使用c ++编译@ http://codepad.org/并运行以下代码

int main() 
{     
    int **p(NULL); 
    return 0;
} 

同样可以使用g ++编译器。

答案 3 :(得分:-6)

您收到语法错误:显然没有定义NULL。你应该包括cstdlib。