首页 > 后端开发 > C++ > 为什么在 C 变量声明中使用括号?

为什么在 C 变量声明中使用括号?

Barbara Streisand
发布: 2024-12-20 16:30:14
原创
921 人浏览过

Why Use Parentheses in C   Variable Declarations?

变量声明中的括号:揭示它们的意义

在使用 C 时,开发人员可能偶然发现了一些令人费解的语法,该语法允许使用括号括起来声明变量。像 int (x) = 0; 这样的声明甚至 int (((x))) = 0;可能会让人们想知道它们的目的和实用性。

这个谜题的答案在于分组的概念。考虑声明一个指向 f(int) 类型函数的指针的示例。标准方法 int *f(int); 被解释为返回 int* 的函数。但是,要正确指定指向该函数的指针,必须引入括号以形成 int (*f)(int);。

同样的原则也适用于数组声明。声明 int *x[5];表示五个 int* 的数组,而 int (*x)[5];指向一个由五个 int 组成的数组。

在提供的代码片段中:

struct B { };
struct C
{
  C (B *) {}
  void f () {};
};

int main()
{
  B *y;
  C (y);  // Oops, compiler error!
}
登录后复制

目的是构造一个 C 类型的对象,该对象将在其析构函数中执行有用的操作。然而,编译器错误地解释了C(y);作为 C 类型变量 y 的声明,导致重定义错误。这就是括号分组发挥作用的地方。通过将构造函数调用封装为 C (y) 而不是 C(y),编译器的解释得到纠正,允许代码按预期进行编译。

以上是为什么在 C 变量声明中使用括号?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板