21xrx.com
2024-09-19 10:10:10 Thursday
登录
文章检索 我的文章 写文章
无法用带括号的初始值设定项在C++中初始化数组
2023-07-07 02:46:08 深夜i     --     --
C++ 数组 括号 初始化 设定项

在C++中,我们通常使用初始值列表来初始化数组元素。然而,有时我们想要使用带括号的初始值设定项来初始化数组,这种方法在其他编程语言中可能是可行的,但在C++中是不允许的。

带括号的初始值设定项通常用于初始化结构体或类的成员变量。它们使用一组括号来指定变量的初始值,如下所示:


struct Example

  int x;

  int y;

;

Example ex = 1;

在上面的例子中,我们使用一个带括号的初始值设定项来初始化结构体Example的两个成员x和y。

然而,如果我们想要使用带括号的初始值设定项来初始化数组,会发现它在C++中是不被允许的。示例如下:


int arr[] = 1; // 合法

int arr[3] = 2; // 合法

int arr[3] = {(1, 2, 3)}; // 不合法

在上面的例子中,我们看到了三种不同的初始化数组的方式。前两种方式都是合法的,而最后一种方式使用了带括号的初始值设定项,但它是不合法的。

那么为什么带括号的初始值设定项不能在C++中用于数组的初始化呢?原因是因为C++标准规定,使用带括号的初始值设定项时,要求初始化的元素数量必须与数组元素的数量相等。而C++中的数组长度是在编译时确定的,因此在编译期间无法确定带括号的初始值设定项中有多少个元素。

虽然不能使用带括号的初始值设定项来初始化数组,但有一种可以达到类似效果的方法,即使用初始化列表。初始化列表是C++11新加入的语法,在初始化数组时可以使用,示例如下:


int arr[] (1; // 合法

通过使用初始化列表,我们可以方便地初始化数组,而无需使用带括号的初始值设定项。需要注意的是,使用初始化列表时,数组长度将会自动计算为列表中的元素数量。

总之,在C++中,带括号的初始值设定项不能用于数组的初始化。如果需要初始化数组,应该使用初始化列表来完成。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复