gpt4 book ai didi

c++ - C++ 中的数组初始化(非字符串)

转载 作者:太空狗 更新时间:2023-10-29 23:40:28 25 4
gpt4 key购买 nike

我正在研究 C++ 中的数组。我定义了一个名为矩阵的二维数组,我将提取负值并将其分配给名为数组的数组。

有没有办法快速将数组初始化为零而不是枚举所有元素?我查看了其他帖子和行,例如:int array[10] = {}int array[10] = {0} 在我的编译器上不起作用。如果我尝试使用这些语句,我会收到错误消息 error: variable-sized object ‘array’ may not be initialized

我的教科书上说所有数组在声明时都被初始化为零,但我在我的编译器上测试了这一点,但事实并非如此;我不得不使用 for 循环将其强制为零。有正确的方法吗?

哦对了,我有一台mac,用g++编译。当我执行 man g++ 时,它说它是一个指向 llvm-gcc 编译器的符号链接(symbolic link)。

#include<iostream>

const int NROWS = 4, NCOLS = 5;
int matrix[][NCOLS] = { 16, 22, 99, 4, 18,
-258, 4, 101, 5, 98,
105, 6, 15, 2, 45,
33, 88, 72, 16, 3};

int main()
{
int SIZE = 10;
int array[SIZE];
int count=0;

// Values of array before initalized
for(int i = 0; i < SIZE; i++)
{
std::cout << array[i] << " ";
}
std::cout << std::endl;

//Initialize array to zero
for(int i = 0; i < SIZE; i++)
{
array[i]=0;
std::cout << array[i] << " ";
}
std::cout << std::endl;

// Extract negative numbers and assign to array
for(int i = 0; i < NROWS; i++)
{
for(int j = 0; j < NCOLS; j++)
{
printf("matrix[%i,%i]=%5i\n",i,j,matrix[i][j]);

if(matrix[i][j] < 0)
{
array[count] = matrix[i][j];
printf("\tarray[%d]= %4d",count, matrix[i][j]);
printf("\tcount=%d\n", count);
count++;
}
}

}

// Values of array
for(int i = 0; i < SIZE; i++)
{
std::cout << array[i] << " ";
}

std::cout << std::endl;

return 0;
}

最佳答案

我在这里猜测。

int array[10] = {0};

是完全合法的,应该适用于任何编译器,但我想你试过了

int SIZE = 10;
int array[SIZE] = {0};

这是完全不同的,而且不合法。数组边界必须是常量,而不是变量。

一些编译器接受变量边界,但这并不使其合法。

关于c++ - C++ 中的数组初始化(非字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com