1

Typedef 的维基百科条目指出,在第一行之后的每一行中:

typedef int (*funcptr)(double);         // pointer to function of double returning int
funcptr x = (funcptr) NULL;             // C or C++
funcptr y = funcptr(NULL);              // C or C++
funcptr z = static_cast<funcptr>(NULL); // C++ only

funcptr 在左侧用于声明变量,在右侧用于强制转换值。现在我明白第二行是将 NULL 转换为 funcptr,所以 x 是 NULL,但第三行到底是什么意思?如果这应该是维基百科条目所暗示的那样,那么为什么括号中是NULL?我不熟悉那种类型的类型转换语法,并且有兴趣看看这是在哪里解释的。

4

1 回答 1

5

第三行是 C++ 语法,就像第四行一样。这意味着构造一个funcptrfrom NULL,在这种情况下具有强制转换的效果。说明这在 C 中也适用的注释行是虚假的。

编辑:我正要编辑维基百科,但有人打败了我:)

于 2013-08-01T20:02:32.413 回答