2个问题:1. 我就不想使用循环初始化数组。2.我的代码 #define MaxVertexNum 100 //最大顶点数 bool collected[MaxVertexNum] = {false}; 和你之前的例子 #define ARRAY_SIZE 10 bool collected[ARRAY_SIZE] = {false}; 有区别吗? 为什么,你建议的初始化数组方式,在我的例子里,只有第一个元素被初始化?
时间: 2024-04-09 17:27:45 浏览: 18
1. 如果你不想使用循环初始化数组,你可以使用以下方式:
```cpp
bool collected[MaxVertexNum] = {[0 ... MaxVertexNum-1] = false};
```
这种方式使用了数组初始化器(array initializer)的扩展语法,通过指定范围来初始化数组的所有元素为 false。这样就能一次性初始化所有元素,而不需要使用循环。
2. 在你的例子中,定义了一个宏 `MaxVertexNum` 和一个全局数组 `collected`,并使用大括号初始化器来初始化所有元素为 false:
```cpp
#define MaxVertexNum 100 //最大顶点数
bool collected[MaxVertexNum] = {false};
```
与我之前给出的例子相比,两者的区别在于宏定义的名称和宏展开后的值不同。在你的例子中,宏 `MaxVertexNum` 的值是 100,而在我之前的例子中,宏 `ARRAY_SIZE` 的值是 10。这意味着在编译时,数组 `collected` 的大小将根据不同的宏值而有所不同。
关于为什么在你的例子中只有第一个元素被初始化,可能是因为你的编译器不支持 C99 标准的数组初始化器扩展语法。在这种情况下,只有第一个元素会被初始化为 false,其余元素将被默认初始化为零值(对于 bool 类型来说,为 false)。
为了确保所有元素都被正确初始化为 false,你可以使用循环来遍历数组并逐个赋值为 false,或者使用上面提到的数组初始化器的扩展语法来初始化所有元素。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)