C++で配列をいじっています。matrix という 2 次元配列を定義し、負の値を抽出して array という配列に代入します。
すべての要素を列挙するのではなく、配列をすばやくゼロに初期化する方法はありますか? 次のような他の投稿や行に目を通しました: int array[10] = {}
or
int array[10] = {0}
do not work on my compiler. error: variable-sized object ‘array’ may not be initialized
これらのステートメントを使用しようとすると 、エラー メッセージが表示されます。
私の教科書では、すべての配列は宣言時にゼロに初期化されると書かれていましたが、コンパイラでこれをテストしたところ、そうではありませんでした。for ループを使用して強制的にゼロにする必要がありました。これを行う正しい方法はありますか?
ところで、私は Mac を持っていて、コンパイルに g++ を使用しています。私が行うman g++
と、llvm-gcc コンパイラへのシンボリック リンクと表示されます。
#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;
}