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

C++: Initialization of pointer to pointer to int

本文关键字:int 指针 初始化 C++      更新时间:2023-10-16

这是我在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)上检查了这一点,两者都工作正常。我在这里错过了什么?

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

例如,这有效

int (**p)(NULL);

这些没有

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

虽然这有效

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

等等......模式是每当存在两个**时初始化失败!我猜是一个错误!MSVC 团队中的某个人可能会确认

这要么是编译器本身的错误,要么可能是你做了一些事情并问了别的东西。

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

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

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

看起来像,与Visual studio有缺陷,如果我使用c ++编译@ http://codepad.org/并运行以下代码,它可以工作

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

使用g++编译器也是如此。

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