我需要一些帮助来计算一个二维数组的行和列。看起来我不会计算列?
#include <stdio.h>
int main() {
char result[10][7] = {
{'1','X','2','X','2','1','1'},
{'X','1','1','2','2','1','1'},
{'X','1','1','2','2','1','1'},
{'1','X','2','X','2','2','2'},
{'1','X','1','X','1','X','2'},
{'1','X','2','X','2','1','1'},
{'1','X','2','2','1','X','1'},
{'1','X','2','X','2','1','X'},
{'1','1','1','X','2','2','1'},
{'1','X','2','X','2','1','1'}
};
int row = sizeof(result) / sizeof(result[0]);
int column = sizeof(result[0])/row;
printf("Number of rows: %d\n", row);
printf("Number of columns: %d\n", column);
}
- 输出:**
行数:10
列数:0
7条答案
按热度按时间nsc4cvqm1#
这就是整数除法的问题!
应该是
并且在整数除法中为
7/10==0
。您要做的是将一行的长度(例如
sizeof(result[0])
)除以该行中一个元素的大小(例如sizeof(result[0][0])
):noj0wjuj2#
使用数组长度宏要方便得多(而且不容易出错):
0mkxixxg3#
这对我很有效(评论解释了 * 为什么 *):
它的输出是:
正如@AnorZaken所指出的,将数组作为参数传递给函数并在其上打印
sizeof
的结果,将输出另一个total
。(不是指向它的指针),C会将其作为副本传递,并在其间应用一些C魔术,所以你传递的并不完全和你想的一样。为了确定你在做什么,避免一些额外的CPU工作和内存消耗,最好是通过引用(使用指针)传递数组和对象,所以你可以这样使用,结果和原来的一样:o7jaxewo4#
eqqqjvef5#
使用下面代码中显示的宏来获取1D、2D或3D数组的任何维度大小。可以编写更多类似的宏来获取4D数组的维度。(我知道现在对Wickerman来说已经太晚了,但这些是给访问此页面的任何人的)
siv3szwd6#
其他的答案很好地解释了这个概念,但对初学者来说并不友好;所以这是我的版本-
kfgdxczn7#