gpt4 book ai didi

c++ - 在 C++ 中初始化二维数组(矩阵)

转载 作者:行者123 更新时间:2023-11-30 03:25:01 38 4
gpt4 key购买 nike

我试图通过 for 循环创建一个二维数组,但我得到了一些垃圾随机数代码:

unsigned int i, j;
int matrix[10][10];//={{},{}};

for (i = 0; i < sizeof(matrix[i])/sizeof(int); i++) {
for (j = 0; j < sizeof(matrix[j])/sizeof(int); j++) {
cout <<matrix[i][j] << " " << flush;
}
cout << endl;
}

当我将 cout 部分更改为以下内容时

cout <<matrix[i][j] = {{i},{j}} << " " << flush;

我得到一个错误。

我该怎么做?先感谢您。

最佳答案

数组的维度是用多少个索引来访问它,不同于维度的大小(维度的一行有多少个元素),不同于数组的大小或完整数组中元素的数量。

根据您编写的内容,您正在编写一个 10 行的二维数组,每行包含 10 个元素,总大小为 100 个元素。

如果你想用那种语法做一个初始化列表,你必须在嵌套大括号中指定每一行和每个元素。您有一组用于整个数组的顶级大括号,然后有一组用于每个子数组的大括号。您可以使用花括号括起每一行来执行此操作,将每个元素指定为逗号分隔列表:

unsigned int i, j;
int matrix[10][10] = {{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10},
{1,2,3,4,5,6,7,8,9,10}};

已编辑:表达式 sizeof(matrix[i]) 给出数组的大小为 40,因为编译器能够在编译时计算出它,但是依赖它可能会有风险,因为如果将它更改为指向数组的指针或数组作为参数传递给函数,它将给出指针而不是数组的大小(如此处解释:How do I determine the size of my array in C?)。最好像这样显示已知长度的数组:

for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
cout <<matrix[i][j] << " " << flush;
}
cout << endl;
}

通常,为了安全和方便更改,您可以使用这样的宏来定义大小:

#define ROWS 10
#define COLS 10
int matrix[ROWS][COLS] = ...;

然后

for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
cout <<matrix[i][j] << " " << flush;
}
cout << endl;
}

这样,如果您以后决定更改矩阵的大小,您只需更改一个地方的数字,即宏定义,而不用遍历代码寻找每个单独的常量(尤其是重复的常量10,您可能会错过一个或更改一个额外的意思,这会在其他地方引起问题)。

关于c++ - 在 C++ 中初始化二维数组(矩阵),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49249203/

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