首頁 > 後端開發 > C++ > 為什麼在 C 變數宣告中使用括號?

為什麼在 C 變數宣告中使用括號?

Barbara Streisand
發布: 2024-12-20 16:30:14
原創
922 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板